Repository: Samsung/CredSweeper Branch: main Commit: 4fef4bedba2e Files: 387 Total size: 16.1 MB Directory structure: gitextract_f9me649i/ ├── LICENSE ├── README.md ├── SECURITY.md ├── action.yml ├── credsweeper/ │ ├── __init__.py │ ├── __main__.py │ ├── app.py │ ├── common/ │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── keyword_checklist.py │ │ ├── keyword_checklist.txt │ │ ├── keyword_pattern.py │ │ └── morpheme_checklist.txt │ ├── config/ │ │ ├── __init__.py │ │ └── config.py │ ├── credentials/ │ │ ├── __init__.py │ │ ├── augment_candidates.py │ │ ├── candidate.py │ │ ├── candidate_group_generator.py │ │ ├── candidate_key.py │ │ ├── credential_manager.py │ │ └── line_data.py │ ├── deep_scanner/ │ │ ├── __init__.py │ │ ├── abstract_scanner.py │ │ ├── byte_scanner.py │ │ ├── bzip2_scanner.py │ │ ├── crx_scanner.py │ │ ├── csv_scanner.py │ │ ├── deb_scanner.py │ │ ├── deep_scanner.py │ │ ├── docx_scanner.py │ │ ├── eml_scanner.py │ │ ├── encoder_scanner.py │ │ ├── gzip_scanner.py │ │ ├── html_scanner.py │ │ ├── jclass_scanner.py │ │ ├── jks_scanner.py │ │ ├── lang_scanner.py │ │ ├── lzma_scanner.py │ │ ├── mxfile_scanner.py │ │ ├── patch_scanner.py │ │ ├── pdf_scanner.py │ │ ├── pkcs_scanner.py │ │ ├── png_scanner.py │ │ ├── pptx_scanner.py │ │ ├── rpm_scanner.py │ │ ├── rtf_scanner.py │ │ ├── sqlite3_scanner.py │ │ ├── strings_scanner.py │ │ ├── tar_scanner.py │ │ ├── tmx_scanner.py │ │ ├── xlsx_scanner.py │ │ ├── xml_scanner.py │ │ ├── zip_scanner.py │ │ └── zlib_scanner.py │ ├── file_handler/ │ │ ├── __init__.py │ │ ├── abstract_provider.py │ │ ├── analysis_target.py │ │ ├── byte_content_provider.py │ │ ├── content_provider.py │ │ ├── data_content_provider.py │ │ ├── descriptor.py │ │ ├── diff_content_provider.py │ │ ├── file_path_extractor.py │ │ ├── files_provider.py │ │ ├── patches_provider.py │ │ ├── string_content_provider.py │ │ ├── struct_content_provider.py │ │ └── text_content_provider.py │ ├── filters/ │ │ ├── __init__.py │ │ ├── filter.py │ │ ├── group/ │ │ │ ├── __init__.py │ │ │ ├── general_keyword.py │ │ │ ├── general_pattern.py │ │ │ ├── group.py │ │ │ ├── password_keyword.py │ │ │ ├── token_pattern.py │ │ │ ├── url_credentials_group.py │ │ │ ├── weird_base36_token.py │ │ │ └── weird_base64_token.py │ │ ├── line_git_binary_check.py │ │ ├── line_specific_key_check.py │ │ ├── line_uue_part_check.py │ │ ├── value_allowlist_check.py │ │ ├── value_array_dictionary_check.py │ │ ├── value_atlassian_token_check.py │ │ ├── value_azure_token_check.py │ │ ├── value_base32_data_check.py │ │ ├── value_base64_data_check.py │ │ ├── value_base64_encoded_pem_check.py │ │ ├── value_base64_key_check.py │ │ ├── value_base64_part_check.py │ │ ├── value_basic_auth_check.py │ │ ├── value_blocklist_check.py │ │ ├── value_camel_case_check.py │ │ ├── value_dictionary_keyword_check.py │ │ ├── value_discord_bot_check.py │ │ ├── value_entropy_base32_check.py │ │ ├── value_entropy_base36_check.py │ │ ├── value_entropy_base64_check.py │ │ ├── value_entropy_base_check.py │ │ ├── value_file_path_check.py │ │ ├── value_github_check.py │ │ ├── value_grafana_check.py │ │ ├── value_grafana_service_check.py │ │ ├── value_hex_number_check.py │ │ ├── value_jfrog_token_check.py │ │ ├── value_json_web_key_check.py │ │ ├── value_json_web_token_check.py │ │ ├── value_last_word_check.py │ │ ├── value_length_check.py │ │ ├── value_method_check.py │ │ ├── value_morphemes_check.py │ │ ├── value_not_allowed_pattern_check.py │ │ ├── value_not_part_encoded_check.py │ │ ├── value_number_check.py │ │ ├── value_pattern_check.py │ │ ├── value_sealed_secret_check.py │ │ ├── value_search_check.py │ │ ├── value_similarity_check.py │ │ ├── value_split_keyword_check.py │ │ ├── value_string_type_check.py │ │ ├── value_token_base32_check.py │ │ ├── value_token_base36_check.py │ │ ├── value_token_base64_check.py │ │ ├── value_token_base_check.py │ │ └── value_token_check.py │ ├── logger/ │ │ ├── __init__.py │ │ └── logger.py │ ├── main.py │ ├── ml_model/ │ │ ├── __init__.py │ │ ├── features/ │ │ │ ├── __init__.py │ │ │ ├── entropy_evaluation.py │ │ │ ├── feature.py │ │ │ ├── file_extension.py │ │ │ ├── has_html_tag.py │ │ │ ├── is_secret_numeric.py │ │ │ ├── length_of_attribute.py │ │ │ ├── morpheme_dense.py │ │ │ ├── rule_name.py │ │ │ ├── rule_severity.py │ │ │ ├── search_in_attribute.py │ │ │ ├── word_in.py │ │ │ ├── word_in_path.py │ │ │ ├── word_in_postamble.py │ │ │ ├── word_in_preamble.py │ │ │ ├── word_in_transition.py │ │ │ ├── word_in_value.py │ │ │ └── word_in_variable.py │ │ ├── ml_config.json │ │ ├── ml_model.onnx │ │ └── ml_validator.py │ ├── py.typed │ ├── rules/ │ │ ├── __init__.py │ │ ├── config.yaml │ │ └── rule.py │ ├── scanner/ │ │ ├── __init__.py │ │ ├── scan_type/ │ │ │ ├── __init__.py │ │ │ ├── multi_pattern.py │ │ │ ├── pem_key_pattern.py │ │ │ ├── scan_type.py │ │ │ └── single_pattern.py │ │ └── scanner.py │ ├── secret/ │ │ ├── config.json │ │ └── log.yaml │ └── utils/ │ ├── __init__.py │ ├── hop_stat.py │ ├── pem_key_detector.py │ └── util.py ├── docs/ │ ├── Makefile │ ├── README.md │ ├── howto/ │ │ └── how-to-contribute.md │ ├── make.bat │ ├── requirements.txt │ └── source/ │ ├── api.rst │ ├── apps_config.rst │ ├── conf.py │ ├── credsweeper.common.rst │ ├── credsweeper.config.rst │ ├── credsweeper.credentials.rst │ ├── credsweeper.deep_scanner.rst │ ├── credsweeper.file_handler.rst │ ├── credsweeper.filters.group.rst │ ├── credsweeper.filters.rst │ ├── credsweeper.logger.rst │ ├── credsweeper.ml_model.features.rst │ ├── credsweeper.ml_model.rst │ ├── credsweeper.rst │ ├── credsweeper.rules.rst │ ├── credsweeper.scanner.rst │ ├── credsweeper.scanner.scan_type.rst │ ├── credsweeper.utils.rst │ ├── develop.rst │ ├── guide.rst │ ├── how_to_contribute.rst │ ├── index.rst │ ├── install.rst │ ├── overall_architecture.rst │ └── rules_config.rst ├── experiment/ │ ├── README.md │ ├── __init__.py │ ├── data_loader.py │ ├── evaluate_model.py │ ├── features.py │ ├── hyperparameters.py │ ├── log_callback.py │ ├── main.py │ ├── main.sh │ ├── ml_model.py │ ├── model_config_preprocess.py │ ├── plot.py │ ├── prepare_data.py │ ├── requirements.txt │ ├── tf2onnx/ │ │ └── tf2onnx.sh │ ├── tools/ │ │ ├── base64_test.py │ │ ├── entropy_test.py │ │ ├── morpheme_test.py │ │ └── strength_test.py │ └── train.py ├── fuzz/ │ ├── README.md │ ├── __main__.py │ ├── auxilary.py │ ├── coveraging.sh │ ├── fuzzing.sh │ ├── minimizing.sh │ ├── re-fuzzing.sh │ ├── reducing.sh │ └── requirements.txt ├── pyproject.toml ├── pytest.ini ├── requirements.txt └── tests/ ├── README.md ├── __init__.py ├── common/ │ ├── __init__.py │ ├── test_confidence.py │ ├── test_keyword_checklist.py │ ├── test_keyword_pattern.py │ ├── test_regex.py │ └── test_severity.py ├── config/ │ ├── __init__.py │ └── test_config.py ├── conftest.py ├── credentials/ │ ├── __init__.py │ ├── test_augment_candidates.py │ ├── test_credential_manager.py │ └── test_line_data.py ├── data/ │ ├── __init__.py │ ├── depth_3_pedantic.json │ ├── doc.json │ ├── no_filters_no_ml.json │ ├── no_ml.json │ └── output.json ├── deep_scanner/ │ ├── __init__.py │ ├── test_abstract_scanner.py │ ├── test_bzip2_scanner.py │ ├── test_crx_scanner.py │ ├── test_csv_scanner.py │ ├── test_deb_scanner.py │ ├── test_deep_scanner.py │ ├── test_eml_scanner.py │ ├── test_encoder_scanner.py │ ├── test_gzip_scanner.py │ ├── test_html_scanner.py │ ├── test_jclass_scanner.py │ ├── test_jks_scanner.py │ ├── test_lzma_scanner.py │ ├── test_mxfile_scanner.py │ ├── test_pdf_scanner.py │ ├── test_png_scanner.py │ ├── test_rtf_scanner.py │ ├── test_sqlite3_scanner.py │ ├── test_strings_scanner.py │ ├── test_struct_scanner.py │ ├── test_tar_scanner.py │ ├── test_tmx_scanner.py │ ├── test_xml_scanner.py │ ├── test_zip_scanner.py │ └── test_zlib_scanner.py ├── file_handler/ │ ├── __init__.py │ ├── test_byte_content_provider.py │ ├── test_data_content_provider.py │ ├── test_diff_content_provider.py │ ├── test_file_path_extractor.py │ ├── test_files_provider.py │ ├── test_patches_provider.py │ ├── test_string_content_provider.py │ ├── test_struct_content_provider.py │ ├── test_text_content_provider.py │ ├── zip_bomb_1.py │ └── zip_bomb_2.py ├── filters/ │ ├── __init__.py │ ├── conftest.py │ ├── test_line_git_binary_check.py │ ├── test_line_specific_key_check.py │ ├── test_line_uue_part_check.py │ ├── test_value_allowlist_check.py │ ├── test_value_array_dictionary_check.py │ ├── test_value_atlassian_token_check.py │ ├── test_value_azure_token_check.py │ ├── test_value_base32_data_check.py │ ├── test_value_base64_data_check.py │ ├── test_value_base64_key_check.py │ ├── test_value_base64_part_check.py │ ├── test_value_basic_auth_check.py │ ├── test_value_blocklist_check.py │ ├── test_value_camel_case_check.py │ ├── test_value_dictionary_keyword_check.py │ ├── test_value_entropy_base32_check.py │ ├── test_value_entropy_base36_check.py │ ├── test_value_entropy_base64_check.py │ ├── test_value_file_path_check.py │ ├── test_value_github_check.py │ ├── test_value_grafana_check.py │ ├── test_value_grafana_service_check.py │ ├── test_value_hex_number_check.py │ ├── test_value_json_web_key_check.py │ ├── test_value_json_web_token_check.py │ ├── test_value_last_word_check.py │ ├── test_value_length_check.py │ ├── test_value_method_check.py │ ├── test_value_morphemes_check.py │ ├── test_value_not_allowed_pattern.py │ ├── test_value_not_part_encoded.py │ ├── test_value_number_check.py │ ├── test_value_pattern_check.py │ ├── test_value_sealed_secret_check.py │ ├── test_value_search_check.py │ ├── test_value_similarity_check.py │ ├── test_value_split_keyword_check.py │ ├── test_value_string_type_check.py │ ├── test_value_token_base32_check.py │ ├── test_value_token_base36_check.py │ ├── test_value_token_base64_check.py │ └── test_value_token_check.py ├── ml_model/ │ ├── __init__.py │ ├── test_features.py │ └── test_ml_validator.py ├── rules/ │ ├── __init__.py │ ├── common.py │ ├── test_api.py │ ├── test_auth.py │ ├── test_aws_key.py │ ├── test_aws_multi.py │ ├── test_aws_mws_key.py │ ├── test_credential.py │ ├── test_dynatrace_api_token.py │ ├── test_facebook_key.py │ ├── test_firebase_domain.py │ ├── test_github_classic_token.py │ ├── test_github_fine_granted_token.py │ ├── test_google_api_key.py │ ├── test_google_multi.py │ ├── test_google_oauth_key.py │ ├── test_instagram_access_token.py │ ├── test_jwt.py │ ├── test_key.py │ ├── test_mailchimp_key.py │ ├── test_nonce.py │ ├── test_password.py │ ├── test_paypal_key.py │ ├── test_pem_key.py │ ├── test_picatic_key.py │ ├── test_pypi_api_token.py │ ├── test_rule.py │ ├── test_salt.py │ ├── test_secret.py │ ├── test_sendgrid_api_key_token.py │ ├── test_shopify_token.py │ ├── test_slack_token.py │ ├── test_slack_webhook.py │ ├── test_square_access_token.py │ ├── test_telegram_bot_api_token.py │ ├── test_token.py │ └── test_url_credentials.py ├── scanner/ │ ├── __init__.py │ └── scan_type/ │ ├── __init__.py │ ├── test_multipattern.py │ └── test_pem_key_pattern.py ├── test_app.py ├── test_doc.py ├── test_git.py ├── test_main.py ├── test_utils/ │ ├── __init__.py │ └── dummy_line_data.py └── utils/ ├── __init__.py ├── test_hop_stat.py └── test_util.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: LICENSE ================================================ Copyright (c) 2021 SAMSUNG Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # CredSweeper [![GitHub release (latestSemVer)](https://img.shields.io/github/v/release/Samsung/CredSweeper)](https://github.com/Samsung/CredSweeper/releases) [![Documentation Status](https://readthedocs.org/projects/credsweeper/badge/?version=latest)](https://credsweeper.readthedocs.io/en/latest/?badge=latest) [![License](https://img.shields.io/badge/licence-MIT-green.svg?style=flat)](LICENSE) [![PyPI](https://img.shields.io/pypi/v/credsweeper)](https://pypi.org/project/credsweeper/) [![Python](https://img.shields.io/pypi/pyversions/credsweeper.svg)](https://badge.fury.io/py/credsweeper) [![Test](https://github.com/Samsung/CredSweeper/actions/workflows/test.yml/badge.svg)](https://github.com/Samsung/CredSweeper/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/Samsung/CredSweeper/branch/main/graph/badge.svg)](https://codecov.io/gh/Samsung/CredSweeper) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6055/badge)](https://bestpractices.coreinfrastructure.org/projects/6055) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/Samsung/CredSweeper/badge)](https://api.securityscorecards.dev/projects/github.com/Samsung/CredSweeper) - [CredSweeper](#credsweeper) - [Introduction](#introduction) - [How To Use](#how-to-use) - [Main Requirements](#main-requirements) - [Installation](#installation) - [Run](#run) - [Config](#config) - [Develop](#develop) - [Tests](#tests) - [Benchmark](#benchmark) - [Overall Architecture](#overall-architecture) - [Retrain Model](#retrain-model) - [License](#license) - [How to Get Involved](#how-to-get-involved) - [Project Roles](#project-roles) - [Contributor](#contributor) - [Maintainer](#maintainer) - [How to Contact](#how-to-contact) ## Introduction CredSweeper is an advanced credential detection tool designed to identify exposed credentials such as passwords, API keys, tokens, and other sensitive information across source code, configuration files, documents, and binary assets. CredSweeper scans regular files, embedded data in containers, and files added in Git commits. The tool combines pattern-based detection, machine learning–based validation, and deep file inspection to deliver comprehensive and accurate security scanning for modern codebases and repositories. **Key Capabilities:** - Credential detection in source code, configuration files, documents, and archives - False positive reduction using algorithmic filters and machine learning - Scanning of compressed files, documents, and binary formats - Git repository analysis and diff scanning Full documentation can be found here: ## How To Use ### Main Requirements - Python 3.10, 3.11, 3.12, 3.13, 3.14 ### Installation Details [here](https://credsweeper.readthedocs.io/en/latest/install.html). ```bash pip install credsweeper ``` ### Run [How to use](https://credsweeper.readthedocs.io/en/latest/guide.html). Run CredSweeper: ```bash python -m credsweeper --path tests/samples/password.gradle --save-json output.json ``` ### JSON Output ```json [ { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "password = \"cackle!\"", "line_num": 1, "path": "./tests/samples/password.gradle", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 12, "value_end": 19, "entropy": 2.52164 } ] } ] ``` ### Config [credsweeper/secret/config.json](credsweeper/secret/config.json) - Configuration file for pre-processing of CredSweeper. For more details please check [here](https://credsweeper.readthedocs.io/en/latest/overall_architecture.html#pre-processing). You can set the `pattern`, `extension` and `path` you want to exclude from scanning as below. ```json { "exclude": { "pattern": [ "AKIA[0-9A-Z]{9}EXAMPLE", ... ], "extension": [ "gif", "jpg", ... ], "path": [ "/.git/", "/openssl/", ... ] }, ... } ``` And you can also set `source_ext`, `source_quote_ext`, `find_by_ext_list`, `check_for_literals`, `line_data_output`, and `candidate_output` as below. - `source_ext`: List of extensions for scanning categorized as source files. - `source_quote_ext`: List of extensions for scanning categorized as source files that use quotes. - `find_by_ext_list`: List of extensions to detect only extensions. - `check_for_literals`: Bool value for whether to check line has string literal declaration or not. - `line_data_output`: List of attributes of [line_data](credsweeper/credentials/line_data.py) for output. - `candidate_output`: List of attributes of [candidate](credsweeper/credentials/candidate.py) for output. ```json { ... "source_ext": [ ".py", ".cpp", ... ], "source_quote_ext": [ ".py", ".cpp", ... ], "find_by_ext_list": [ ".pem", ".cer", ... ], "check_for_literals": true, "line_data_output": [ "line", "line_num", ... ], "candidate_output": [ "rule", "severity", ... ] } ``` [credsweeper/rules/config.yaml](credsweeper/rules/config.yaml) - Configuration file for setting Rule. For more details please check [here](https://credsweeper.readthedocs.io/en/latest/overall_architecture.html#rule). ```yaml - name: Credential severity: medium confidence: moderate type: keyword values: - credential filter_type: GeneralKeyword use_ml: true min_line_len: 18 required_substrings: - credential target: - code ``` ## Develop ### Tests Run all tests with random order: ```bash python -m pytest --cov=credsweeper --cov-report=term-missing --random-order --random-order-bucket=global -s tests/ ``` ### Benchmark We have a dataset for testing credential scanners called [CredData](https://github.com/Samsung/CredData). If you want to test CredSweeper with this dataset please check [here](https://github.com/Samsung/CredData/blob/main/README.md#benchmark). ## Overall Architecture To check overall architecture of CredSweeper please check [here](https://credsweeper.readthedocs.io/en/latest/overall_architecture.html). ## Retrain Model If you want to check how model was trained or retrain it on your own data, please refer to the [experiment](experiment/README.md) folder ## License The CredSweeper is an Open Source project released under the terms of [MIT License](https://opensource.org/licenses/mit-license.php). ## How to Get Involved In addition to developing under an Open Source license, the project follows an Open Source Development approach, welcoming everyone to participate, contribute, and engage with each other through the project. ### Project Roles The project recognizes the following formal roles: Contributor and Maintainer. Informally, the community may organize itself and grant additional rights and responsibilities to the necessary people to achieve its goals. #### Contributor A Contributor is anyone who wishes to contribute to the project, at any level. Contributors are granted the following rights to: - Contribute code, documentation, translations, artwork, samples, etc. - Report defects (bugs) and suggestions for enhancement. - Participate in the process of reviewing contributions by others. If you want to participate in the project development, check out the [how to contribute guideline](./docs/howto/how-to-contribute.md) in advance. Contributors who show dedication and skill are rewarded with additional rights and responsibilities. Their opinions weigh more when decisions are made, in a fully meritocratic fashion. #### Maintainer A Maintainer is a Contributor who is also responsible for knowing, directing and anticipating the needs of a given Module. As such, Maintainers have the right to set the overall organization of the source code in the Module, and the right to participate in the decision-making. Maintainers are required to review the contributor’s requests and decide whether to accept or not. | Name | E-Mail | |------------------------------------------------|------------------------| | [Jaeku Yun](https://github.com/silentearth) | jk0113.yun@samsung.com | | [Shinhyung Choi](https://github.com/csh519) | sh519.choi@samsung.com | | [Roman Babenko](https://github.com/babenek) | r.babenko@samsung.com | | [Yuliia Tatarinova](https://github.com/Yullia) | yuliia.t@samsung.com | ## How to Contact Please post questions, [issues, or suggestions in issues](https://github.com/Samsung/CredSweeper/issues). This is the best way to communicate with the developers. ================================================ FILE: SECURITY.md ================================================ # Security Policy ## Supported Versions | Version | Supported | |---------|--------------------| | 1.15.x | :white_check_mark: | | <1.15.x | :x: | ## Reporting a Vulnerability Please use [issues](https://github.com/Samsung/CredSweeper/issues) to report about any security issue. ================================================ FILE: action.yml ================================================ name: "CredSweeper action" description: "CredSweeper checks files" author: "r.babenko@samsung.com" branding: icon: "terminal" color: "gray-dark" inputs: python_version: description: "Python Version. 3.10 - default" default: "3.10" required: false path: description: "Path to scan" required: true report: description: "CredSweeper report in JSON format" default: "output.json" required: false hashed: description: "Report output is hashed by default" default: "--hashed" required: false error: description: "Exit with an error code if credentials are detected" default: "--error" required: false runs: using: "composite" steps: - name: DEBUG shell: bash env: path: ${{ inputs.path }} report: ${{ inputs.report }} error: ${{ inputs.error }} hashed: ${{ inputs.hashed }} run: echo "print ('@@@ $error @@@ $report @@@ $path @@@ $PATH @@@')" - name: Setup Python uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0 - 2025.01.28 with: python-version: ${{ inputs.python_version }} - name: Install CredSweeper shell: bash run: python -m pip install credsweeper - name: Run CredSweeper shell: bash env: path: ${{ inputs.path }} report: ${{ inputs.report }} error: ${{ inputs.error }} hashed: ${{ inputs.hashed }} run: python -m credsweeper --banner --log INFO --no-color --no-stdout "$error" "$hashed" --save-json "$report" --path "$path" ================================================ FILE: credsweeper/__init__.py ================================================ from credsweeper.app import CredSweeper from credsweeper.common.constants import ThresholdPreset, Severity, Confidence from credsweeper.file_handler.byte_content_provider import ByteContentProvider from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.diff_content_provider import DiffContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider from credsweeper.file_handler.text_content_provider import TextContentProvider from credsweeper.ml_model.ml_validator import MlValidator __all__ = [ "ByteContentProvider", # "Confidence", # "ContentProvider", # "CredSweeper", # "DataContentProvider", # "DiffContentProvider", # "MlValidator", # "Severity", # "StringContentProvider", # "TextContentProvider", # "ThresholdPreset", # "__version__" ] __version__ = "1.15.7" ================================================ FILE: credsweeper/__main__.py ================================================ import sys from credsweeper.main import main if __name__ == "__main__": sys.exit(main()) ================================================ FILE: credsweeper/app.py ================================================ import json import logging import multiprocessing import signal from pathlib import Path from typing import Any, List, Optional, Union, Dict, Sequence, Tuple import pandas as pd from colorama import Style # Directory of credsweeper sources MUST be placed before imports to avoid circular import error APP_PATH = Path(__file__).resolve().parent from credsweeper.scanner.scanner import Scanner from credsweeper.common.constants import Severity, ThresholdPreset, DiffRowType, DEFAULT_ENCODING from credsweeper.config.config import Config from credsweeper.credentials.candidate import Candidate from credsweeper.credentials.candidate_key import CandidateKey from credsweeper.credentials.credential_manager import CredentialManager from credsweeper.deep_scanner.deep_scanner import DeepScanner from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor from credsweeper.file_handler.abstract_provider import AbstractProvider from credsweeper.ml_model.ml_validator import MlValidator from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class CredSweeper: """Advanced credential analyzer base class. Parameters: credential_manager: CredSweeper credential manager object scanner: CredSweeper scanner object pool_count: number of pools used to run multiprocessing scanning config: dictionary variable, stores analyzer features json_filename: string variable, credential candidates export filename """ def __init__(self, rule_path: Union[None, str, Path] = None, config_path: Optional[str] = None, json_filename: Union[None, str, Path] = None, xlsx_filename: Union[None, str, Path] = None, stdout: bool = False, color: bool = False, hashed: bool = False, subtext: bool = False, sort_output: bool = False, use_filters: bool = True, pool_count: int = 1, ml_batch_size: Optional[int] = None, ml_threshold: Union[int, float, ThresholdPreset] = ThresholdPreset.medium, ml_config: Union[None, str, Path] = None, ml_model: Union[None, str, Path] = None, ml_providers: Optional[str] = None, find_by_ext: bool = False, pedantic: bool = False, depth: int = 0, doc: bool = False, severity: Union[Severity, str] = Severity.INFO, size_limit: Optional[str] = None, exclude_lines: Optional[List[str]] = None, exclude_values: Optional[List[str]] = None, thrifty: bool = False, log_level: Optional[str] = None) -> None: """Initialize Advanced credential scanner. Args: rule_path: optional str variable, path of rule config file validation was the grained candidate model on machine learning config_path: optional str variable, path of CredSweeper config file default built-in config is used if None json_filename: optional string variable, path to save result to json xlsx_filename: optional string variable, path to save result to xlsx stdout: print results to stdout color: print concise results to stdout with colorization hashed: use hash of line, value and variable instead plain text subtext: use subtext of line near variable-value like it performed in ML use_filters: boolean variable, specifying the need of rule filters pool_count: int value, number of parallel processes to use ml_batch_size: int value, size of the batch for model inference ml_threshold: float or string value to specify threshold for the ml model ml_config: str or Path to set custom config of ml model ml_model: str or Path to set custom ml model ml_providers: str - comma separated list with providers find_by_ext: boolean - files will be reported by extension pedantic: boolean - scan all files depth: int - how deep container files will be scanned doc: boolean - document-specific scanning severity: Severity - minimum severity level of rule size_limit: optional string integer or human-readable format to skip oversize files exclude_lines: lines to omit in scan. Will be added to the lines already in config exclude_values: values to omit in scan. Will be added to the values already in config thrifty: free provider resources after scan to reduce memory consumption log_level: str - level for pool initializer according logging levels (UPPERCASE) """ self.pool_count: int = max(1, int(pool_count)) if not (_severity := Severity.get(severity)): raise RuntimeError(f"Severity level provided: {severity}" f" -- must be one of: {' | '.join([i.value for i in Severity])}") config_dict = self._get_config_dict(config_path=config_path, use_filters=use_filters, find_by_ext=find_by_ext, pedantic=pedantic, depth=depth, doc=doc, severity=_severity, size_limit=size_limit, exclude_lines=exclude_lines, exclude_values=exclude_values) self.config = Config(config_dict) self.scanner = Scanner(self.config, rule_path) self.deep_scanner = DeepScanner(self.config, self.scanner) self.credential_manager = CredentialManager() self.json_filename: Union[None, str, Path] = json_filename self.xlsx_filename: Union[None, str, Path] = xlsx_filename self.stdout = stdout self.color = color self.hashed = hashed self.subtext = subtext self.sort_output = sort_output self.ml_batch_size = ml_batch_size if ml_batch_size and 0 < ml_batch_size else 16 self.ml_threshold = ml_threshold self.ml_config = ml_config self.ml_model = ml_model self.ml_providers = ml_providers self.__thrifty = thrifty self.__log_level = log_level self.__ml_validator: Optional[MlValidator] = None # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @staticmethod def _get_config_path(config_path: Optional[str]) -> Path: if config_path: return Path(config_path) return APP_PATH / "secret" / "config.json" # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def _get_config_dict( self, # config_path: Optional[str], # use_filters: bool, # find_by_ext: bool, # pedantic: bool, # depth: int, # doc: bool, # severity: Severity, # size_limit: Optional[str], # exclude_lines: Optional[List[str]], # exclude_values: Optional[List[str]]) -> Dict[str, Any]: config_dict = Util.json_load(self._get_config_path(config_path)) config_dict["use_filters"] = use_filters config_dict["find_by_ext"] = find_by_ext config_dict["size_limit"] = size_limit config_dict["pedantic"] = pedantic config_dict["depth"] = depth config_dict["doc"] = doc config_dict["severity"] = severity.value if exclude_lines is not None: config_dict["exclude"]["lines"] = config_dict["exclude"].get("lines", []) + exclude_lines if exclude_values is not None: config_dict["exclude"]["values"] = config_dict["exclude"].get("values", []) + exclude_values return config_dict # type: ignore # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def _use_ml_validation(self) -> bool: if isinstance(self.ml_threshold, int) and 0 == self.ml_threshold: logger.info("ML validation is disabled") return False if not self.credential_manager.candidates: logger.info("Skip ML validation because no candidates were found") return False for i in self.credential_manager.candidates: if i.use_ml: # any() or all() is not used to speedup return True logger.info("Skip ML validation because no candidates support it") return False # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @property def ml_validator(self) -> MlValidator: """ml_validator getter""" if not self.__ml_validator: self.__ml_validator = MlValidator( threshold=self.ml_threshold, # ml_config=self.ml_config, # ml_model=self.ml_model, # ml_providers=self.ml_providers, # ) if not self.__ml_validator: raise RuntimeError("MlValidator was not initialized!") return self.__ml_validator # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @staticmethod def pool_initializer(log_kwargs) -> None: """Ignore SIGINT in child processes.""" logging.basicConfig(**log_kwargs) signal.signal(signal.SIGINT, signal.SIG_IGN) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def run(self, content_provider: AbstractProvider) -> int: """Run an analysis of 'content_provider' object. Args: content_provider: path objects to scan """ _empty_list: Sequence[ContentProvider] = [] file_extractors = content_provider.get_scannable_files(self.config) if content_provider else _empty_list if not file_extractors: logger.info("No scannable targets for %s paths", len(content_provider.paths)) return 0 self.scan(file_extractors) self.post_processing() # PatchesProvider has the attribute. Circular import error appears with using the isinstance change_type = content_provider.change_type if hasattr(content_provider, "change_type") else None self.export_results(change_type) return self.credential_manager.len_credentials() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def scan(self, content_providers: Sequence[ContentProvider]) -> None: """Run scanning of files from an argument "content_providers". Args: content_providers: file objects to scan """ if 1 < self.pool_count and 1 < len(content_providers): self.__multi_jobs_scan(content_providers) else: self.__single_job_scan(content_providers) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def __single_job_scan(self, content_providers: Sequence[ContentProvider]) -> None: """Performs scan in main thread""" logger.info("Scan for %s providers", len(content_providers)) all_cred = self.files_scan(content_providers) self.credential_manager.set_credentials(all_cred) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def __multi_jobs_scan(self, content_providers: Sequence[ContentProvider]) -> None: """Performs scan with multiple jobs""" # use this separation to satisfy YAPF formatter yapfix = "%(asctime)s | %(levelname)s | %(processName)s:%(threadName)s | %(filename)s:%(lineno)s | %(message)s" log_kwargs = {"format": yapfix} if isinstance(self.__log_level, str): # is not None if "SILENCE" == self.__log_level: logging.addLevelName(60, "SILENCE") log_kwargs["level"] = self.__log_level pool_count = min(self.pool_count, len(content_providers)) logger.info("Scan in %s processes for %s providers", pool_count, len(content_providers)) with multiprocessing.get_context("spawn").Pool(processes=pool_count, initializer=CredSweeper.pool_initializer, initargs=(log_kwargs,)) as pool: # yapf: disable try: for scan_results in pool.imap_unordered(self.files_scan, (content_providers[x::pool_count] for x in range(pool_count))): for cred in scan_results: self.credential_manager.add_credential(cred) except KeyboardInterrupt: pool.terminate() pool.join() raise pool.close() pool.join() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def files_scan(self, content_providers: Sequence[ContentProvider]) -> List[Candidate]: """Auxiliary method for scan one sequence""" all_cred: List[Candidate] = [] for provider in content_providers: candidates = self.file_scan(provider) if self.__thrifty: provider.free() all_cred.extend(candidates) logger.info("Completed: processed %s providers with %s candidates", len(content_providers), len(all_cred)) return all_cred # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def file_scan(self, content_provider: ContentProvider) -> List[Candidate]: """Run scanning of file from 'file_provider'. Args: content_provider: content provider object to scan Return: list of credential candidates from scanned file """ candidates: List[Candidate] = [] logger.debug("Start scan file: %s %s", content_provider.file_path, content_provider.info) if FilePathExtractor.is_find_by_ext_file(self.config, content_provider.file_type): # Skip the file scanning and create fake candidate because the extension is suspicious dummy_candidate = Candidate.get_dummy_candidate(self.config, content_provider.file_path, content_provider.file_type, content_provider.info, FilePathExtractor.FIND_BY_EXT_RULE) candidates.append(dummy_candidate) else: if self.config.depth or self.config.doc: # deep scan with possible data representation candidates = self.deep_scanner.scan(content_provider, self.config.depth, self.config.size_limit) else: if content_provider.file_type not in self.config.exclude_containers: # Regular file scanning candidates = self.scanner.scan(content_provider) # finally return result from 'file_scan' return candidates # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def post_processing(self) -> None: """Machine learning validation for received credential candidates.""" if purged := self.credential_manager.purge_duplicates(): logger.info("Purged %s duplicates", purged) if self._use_ml_validation(): logger.info("Grouping %s candidates", len(self.credential_manager.candidates)) new_cred_list: List[Candidate] = [] cred_groups = self.credential_manager.group_credentials() ml_cred_groups: List[Tuple[CandidateKey, List[Candidate]]] = [] for group_key, group_candidates in cred_groups.items(): # Analyze with ML if any candidate in group require ML for candidate in group_candidates: if candidate.use_ml: ml_cred_groups.append((group_key, group_candidates)) break else: # all candidates do not require ML new_cred_list.extend(group_candidates) # prevent extra ml_validator creation if ml_cred_groups is empty if ml_cred_groups: logger.info("Run ML Validation for %s groups", len(ml_cred_groups)) is_cred, probability = self.ml_validator.validate_groups(ml_cred_groups, self.ml_batch_size) for i, (_, group_candidates) in enumerate(ml_cred_groups): for candidate in group_candidates: if candidate.use_ml: if is_cred[i]: candidate.ml_probability = probability[i] new_cred_list.append(candidate) else: new_cred_list.append(candidate) else: logger.info("Skipping ML validation due not applicable") self.credential_manager.set_credentials(new_cred_list) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def export_results(self, change_type: Optional[DiffRowType] = None) -> None: """ Save credential candidates to json file or print them to a console. Args: change_type: flag to know which file should be created for a patch """ credentials = self.credential_manager.get_credentials() logger.info("Exporting %s credentials", len(credentials)) if self.sort_output: credentials.sort(key=lambda x: ( # x.line_data_list[0].path, # x.line_data_list[0].line_num, # x.severity, # x.rule_name, # x.line_data_list[0].value_start, # x.line_data_list[0].value_end # )) if self.json_filename: json_path = Path(self.json_filename) if isinstance(change_type, DiffRowType): # add suffix for appropriated reports to create two files for the patch scan json_path = json_path.with_suffix(f".{change_type.value}{json_path.suffix}") with open(json_path, 'w', encoding=DEFAULT_ENCODING) as f: # use the approach to reduce total memory usage in case of huge data first_item = True f.write('[\n') for credential in credentials: if first_item: first_item = False else: f.write(",\n") f.write(json.dumps(credential.to_json(hashed=self.hashed, subtext=self.subtext), indent=4)) f.write("\n]") if self.xlsx_filename: data_list = [] for credential in credentials: data_list.extend(credential.to_dict_list(hashed=self.hashed, subtext=self.subtext)) df = pd.DataFrame(data=data_list) if isinstance(change_type, DiffRowType): if Path(self.xlsx_filename).exists(): with pd.ExcelWriter(self.xlsx_filename, mode='a', engine="openpyxl", if_sheet_exists="replace") as writer: df.to_excel(writer, sheet_name=change_type.value, index=False) else: df.to_excel(self.xlsx_filename, sheet_name=change_type.value, index=False) else: df.to_excel(self.xlsx_filename, sheet_name="report", index=False) if self.color: for credential in credentials: for line_data in credential.line_data_list: # bright rule name and path or info if isinstance(credential.ml_probability, float): ml_probability_info = f" {credential.ml_probability:.6f}" else: ml_probability_info = "" print(Style.BRIGHT + credential.rule_name + f" {line_data.info or line_data.path}:{line_data.line_num}{ml_probability_info}" + Style.RESET_ALL) print(line_data.get_colored_line(hashed=self.hashed, subtext=self.subtext)) if self.stdout: for credential in credentials: print(credential.to_str(hashed=self.hashed, subtext=self.subtext)) ================================================ FILE: credsweeper/common/__init__.py ================================================ from credsweeper.common.keyword_checklist import KeywordChecklist # use the variable to avoid singleton creation and make testing easier static_keyword_checklist = KeywordChecklist() ================================================ FILE: credsweeper/common/constants.py ================================================ import string import typing from enum import Enum from typing import Optional, Union class Severity(Enum): """Severity of candidate""" CRITICAL = "critical" HIGH = "high" MEDIUM = "medium" LOW = "low" INFO = "info" def __lt__(self, other) -> bool: if Severity.INFO == self: return other is not Severity.INFO if Severity.LOW == self: return other in [Severity.MEDIUM, Severity.HIGH, Severity.CRITICAL] if Severity.MEDIUM == self: return other in [Severity.HIGH, Severity.CRITICAL] if Severity.HIGH == self: return other is Severity.CRITICAL return False @staticmethod def get(severity: Union[str, "Severity"]) -> Optional["Severity"]: """returns Severity value from string or None""" if isinstance(severity, Severity): return severity if isinstance(severity, str): value = getattr(Severity, severity.strip().upper(), None) if isinstance(value, Severity): return value return None class Confidence(Enum): """Confidence of candidate""" STRONG = "strong" MODERATE = "moderate" WEAK = "weak" def __lt__(self, other) -> bool: if Confidence.WEAK == self: return other is not Confidence.WEAK if Confidence.MODERATE == self: return other is Confidence.STRONG return False @staticmethod def get(confidence: Union[str, "Confidence"]) -> Optional["Confidence"]: """returns Confidence value from string or None""" if isinstance(confidence, Confidence): return confidence if isinstance(confidence, str): value = getattr(Confidence, confidence.strip().upper(), None) if isinstance(value, Confidence): return value return None BASE64COMMON = string.ascii_uppercase + string.ascii_lowercase + string.digits class Chars(Enum): """Stores enumeration of characters sets of encoding dictionaries""" # set of characters, hexadecimal numeral system (Base16). Upper- and lowercase HEX_CHARS = string.digits + "ABCDEFabcdef" # UUID charset in uppercase UUID_UPPER_CHARS = string.digits + "ABCDEF-" # UUID charset in lowercase UUID_LOWER_CHARS = string.digits + "abcdef-" # set of characters, hexadecimal numeral system (Base16). Uppercase BASE16UPPER = string.digits + "ABCDEF" # set of characters, hexadecimal numeral system (Base16). Lowercase BASE16LOWER = string.digits + "abcdef" # set of 32 characters, used in Base32 encoding BASE32_CHARS = string.ascii_uppercase + "234567" # set of 36 characters, used in Base36 encoding BASE36_CHARS = string.digits + string.ascii_lowercase # base62 set https://en.wikipedia.org/wiki/Base62 BASE62_CHARS = string.digits + string.ascii_uppercase + string.ascii_lowercase # URL- and filename-safe standard BASE64URL_CHARS = BASE64COMMON + "-_" # URL- and filename-safe standard plus padding sign BASE64URLPAD_CHARS = BASE64COMMON + "-_=" # standard base64 charset BASE64STD_CHARS = BASE64COMMON + "+/" # standard base64 plus padding sign BASE64STDPAD_CHARS = BASE64COMMON + "+/=" # except whitespaces ASCII_VISIBLE = string.digits + string.ascii_letters + string.punctuation # all printable symbols ASCII_PRINTABLE = string.printable class GroupType(Enum): """Group type - used in Group constructor for load predefined set of filters""" KEYWORD = "keyword" PATTERN = "pattern" # for empty filter set DEFAULT = "default" class RuleType(Enum): """Rule type""" # combine pattern with predefined structure KEYWORD = "keyword" # use patterns as-is. all patterns must be found in target (line) PATTERN = "pattern" # single value to detect pem format with specific scanner PEM_KEY = "pem_key" # When first pattern found - second will be searched in adjoining lines MULTI = "multi" class ThresholdPreset(Enum): """Preset threshold to simplify precision/recall selection for the user.""" lowest = "lowest" low = "low" medium = "medium" high = "high" highest = "highest" class DiffRowType(Enum): """Diff type of row""" ADDED = "added" DELETED = "deleted" StartEnd = typing.NamedTuple("StartEnd", [("start", int), ("end", int)]) MIN_VARIABLE_LENGTH = 1 MIN_SEPARATOR_LENGTH = 1 MIN_VALUE_LENGTH = 4 # if the line is oversize - it will be scanned by chunks with overlapping MAX_LINE_LENGTH = 8000 # the size for overlapping chunks must be less than MAX_LINE_LENGTH CHUNK_SIZE = 4000 OVERLAP_SIZE = 1000 CHUNK_STEP_SIZE = CHUNK_SIZE - OVERLAP_SIZE # ML hunk size to limit of variable or value size and get substring near value ML_HUNK = 64 # values according https://docs.python.org/3/library/codecs.html UTF_8 = "utf_8" LATIN_1 = "latin_1" ASCII = "ascii" # 16-bits codecs may be detected during decoding UTF_16_LE = "utf_16_le" UTF_16_BE = "utf_16_be" DEFAULT_ENCODING = UTF_8 # LATIN_1 has to be placed at end to apply binary file detection AVAILABLE_ENCODINGS = [UTF_8, LATIN_1] # to limit memory usage in case of recursive scan RECURSIVE_SCAN_LIMITATION = 1 << 30 # default value for config and ValuePatternCheck DEFAULT_PATTERN_LEN = 4 # PEM x509 patterns PEM_BEGIN_PATTERN = "-----BEGIN" PEM_END_PATTERN = "-----END" # similar min_line_len in rule_template - no real credential in data less than 8 bytes MIN_DATA_LEN = 8 ================================================ FILE: credsweeper/common/keyword_checklist.py ================================================ from functools import cached_property from typing import Set, List from credsweeper.app import APP_PATH class KeywordChecklist: """KeywordsChecklist contains words 3 or more letters length""" __keyword_set: Set[str] __morpheme_set: Set[str] KEYWORD_PATH = APP_PATH / "common" / "keyword_checklist.txt" MORPHEME_PATH = APP_PATH / "common" / "morpheme_checklist.txt" def __init__(self) -> None: # used suggested text read style. split() is preferred because it strips 0x0A on end the file self.__keyword_list = self.KEYWORD_PATH.read_text().split() self.__keyword_list.sort(key=str.__len__, reverse=True) self.__keyword_set = set(self.KEYWORD_PATH.read_text().split()) # The list of morphemes can be combined to form words. # The value is considered a variable if at least two exist. self.__morpheme_set = set(self.MORPHEME_PATH.read_text().split()) @cached_property def keyword_set(self) -> Set[str]: """Get set with keywords""" return self.__keyword_set @cached_property def keyword_list(self) -> List[str]: """Get list with keywords in descended order of length""" return self.__keyword_list @cached_property def keyword_len(self) -> int: """Length of keyword_set""" return len(self.__keyword_set) @cached_property def morpheme_set(self) -> Set[str]: """Get extended set with keywords. Return: Extended set of strings """ return self.__morpheme_set @cached_property def morpheme_len(self) -> int: """Length of morpheme_set""" return len(self.__morpheme_set) def check_morphemes(self, line_lower: str, threshold: int) -> bool: """Checks limit of morphemes limit in line. Args: line_lower: input line - MUST be in lower threshold: number of minimal morphemes Return: True - if number of morphemes exceeds the threshold """ matches = 0 for keyword in self.morpheme_set: if keyword in line_lower: matches += 1 if threshold < matches: return True return False ================================================ FILE: credsweeper/common/keyword_checklist.txt ================================================ 1234 abort about above absolute abstract accent accept access account action active activity actor actual added adding additional address adjust advise after again agent alert alias algori allow alpha already always amount analyses analyze anchor android animated animation another anony apache api appearance apple application apply are argc args argv argument array arrow article ascii aside assembly asset assert assign associated association atomic attachment attribute audio author authen automatically available avatar avoid await awesome aws backdrop background backward badge banner based basic beans because before begin behind being below between beware binary binding binds blah black blank bless block boost bool border bottle bottom bound brain branch brand break breeze brief broker browse buffer build bundle button byte cache calendar callback called caller calls camel cancel cannot canvas capacity capab carat carousel cascade cases catalog catch categories category cause center certificate chain change channel chapter character chart check chevron child choices chomp choose chosen chrome chunk circle clang class clean clear click client clock clone close closure cloud cocoa coding collapse collect color column command comment commit common compact compare compilation complete completion component components compute condensed condition config confirm connect consists console constant constraints consumer contact contain content context continue control convenience convert copy cookie coordinator corner correct could count course cover create creature credential cron criteria croak cross cubic curl current custom danger darken dashboard dashed data declaration declared decod decoration default deferred define definition delay delegate delete delivery delta demo dependency dependent depth describe description designer desktop destination destroy detail development device devise diagnostic dictionary different digest direct disable dismiss dispatch display disposable dispose disposing distance distribute distribution doctrine document domain dotted double download draft driver dumps duration during dword dynamic easing eclipse editing editor effect either elastic element email empty enable encod encrypt engine enrollment ensure entity entries entry environment equal equals erase error event example except exclude execute exist expand expect explode expir export exposed expression extend extension external extra faces factory failed failure false family feature federate feedback fetch field figure file files filename filter finagle final finish first fixed fixture flags flash float floor fluid flush focus folder follow footer force format forms formula forum forward found fragment frame freeze friend fulfill function furnished future gallery gateway generate generator generic geometry getter get( given github gitlab global graphics green group grunt guard handle header heading height hello helper hidden highlight history holders hooks horizontal hours hover http html icons ignore image immediately immutable implemented import include index indicator inference infinite info inherit inherited initial inject inner input insert inside inspect install instance instead intent interaction intercept interface internal interrupt intro invalid inverted invoke isolate issue item iterat itself java justified justify key label labels lambda language large launch layer layout leader least legend length letter level library light limit linear lines links linux listener little loaded loading loads local location logger login logon loose lower machine makes manage mapping marathon margin mark master match material matrix maximum means measure media medium member memory message meteor method methods metro middle might minus minutes missing mixed mobile model modified module moment month mount mouse multiple mutating name native navigation needed needs network neutral neutron never nexus nodes none normal notes nothing notice notification null number oauth object oblique observe observer occurs offline offset often openssl operation operator option oracle orange orbit order orientation origin organis other outer outline overflow override overview owner package packet padding pager pages palette panel paper param parent parse partial parts passed passing passcode passphrase password patch paths pattern pause peer payload payment pending people percent perform performance persistence person perspective phone picker pills pipeline pixels place placement plain platform player point pool policy portal portfolio position possible posts power precedence preference prefix preparation prepare presence present pressed preview previous price primary print priority private problem process produce product profile program progress project promise properties property props protected protocol prototype provide proxy public publish purchase purple queri query question queue radio radius rails raise raises random range react reader readonly readme ready really realm reason reboot receive recommended record recreated redirect reference reflect refresh regenerated region regist reject related relation relative release reload remarks remote remove render repeat replace replica reply report repository representing request requests require rescue reserved reset resolution resolve resource response responsible responsive restart restriction result resume retain return reveal reverse right ripple roles rotate round route rudder rules runner running sample scale scanner scene scenario scope score screen script scroll sealed search second secret section secure security segue select sender sending sequel sequence series serial server service session setting setter setup sha256 sha1 sha2 sha224 sha512 shadow shallow shape share shift short should showing shown shutdown sidebar signature sign similar simple since single sites size sizing sleep slice slick slide small smart snapshot social socket solid sorted source space spaces spacing spark speak special specific specified specify specs speed spell spinner split spray square stack start stash state static stats status steps sticky storage store strategy stream stretch strict string strip stroke strong struct stubs student stuff style subject submit subscriptions subtitle success suite summary super support swift swing switch symbol synchronized synthesize system table tablet target tasks teacher team temp terms test texture their theme there these thick those thread three thrift through throw thrown throws thumb thumbs ticket timeline timer times timing title today token tools topic total touch trace track trait trans tagword triangle trigger true trust trying tween type typically uint unavailable under uniform union unique universe unknown unless unlock unsigned unstable until update upload used username using usually valid value variable variant vector verbose verify version vertical video views virtual visibility visible visit volatile void volume wallet warning watch waves weight whatever where whether which while white width window with within without world would wrapper write written xxxxx yellow yield your zeros .json .xml ================================================ FILE: credsweeper/common/keyword_pattern.py ================================================ import re class KeywordPattern: """Pattern set of keyword types""" directive = r"(?P(?:" \ r"(?:[#%]define|define(?=(\s|\\{1,8}[tnr])*\()|%global)" \ r"(?:\s?\(|\s|\\{1,8}[tnr]){1,8}|\bset(?=\b|\w*(\s|\\{1,8}[tnr])*\()" \ r"))?" key_left = r"(?:\\[nrt]|(\\\\*u00|%)[0-9a-f]{2}|\s)*" \ r"(?P(([\"'`]{1,8}[^:=\"'`}<>\\/&?]*|[^:=\"'`}<>\s()\\/&?;,%]*)" # keyword will be inserted here key_right = r"[^%:=\"'`<>({?!&;\n]{0,80}" \ r")" \ r"(&(quot|apos|#3[49]);|(\\\\*u00|%)[0-9a-f]{2}|[\"'`])*" \ r")" # separator = r"(?(directive)|(\s|\\{1,8}[tnr])*\]?(\s|\\{1,8}[tnr])*)" \ r"(?P:(\s[a-z]{3,9}[?]?\s)?=|:(?!:)|=(>|>|(\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=" \ r"|(?(directive)(,|\\t|\s|\((?!\))){1,80}|%3d))" \ r"(\s|\\{1,8}[tnr])*" # might be curly, square or parenthesis with words before wrap = r"(?P(" \ r"((\s|\\{1,8}[tnr]|new|byte|char|string|\[\]){1,8})?" \ r"(?P([_a-z][0-9a-z_.\[\]]*\.)get|(os\.)?getenv)?" \ r"([0-9a-z_.]|::|-(>|>))*" \ r"\s*" \ r"(\[(?!\])|\((?!\))|\{(?!\}))" \ r"(\s|\\{1,8}[tnr])*" \ r"(?(get)('[^']{1,31}'|\"[^\"]{1,31}\")\s*(,|\)\s*or)\s*|)" \ r"([0-9a-z_]{1,32}\s*[:=]\s*)?" \ r"){1,8})?" string_prefix = r"(((b|r|br|rb|u|t|f|rf|fr|l|@)(?=(\\*[\"'`])))?" left_quote = r"(?P((?P\\{1,8})?([\"'`]|&(quot|apos|#3[49]);)){1,4}))?" # Authentication scheme ( oauth | basic | bearer | apikey ) precedes to credential auth_keywords = r"(\s?(oauth|bot|basic|bearer|apikey|accesskey|ssws|ntlm|token)\s)?" value = r"(?P" \ r"(?(value_leftquote)" \ r"(" \ r"(?!(?P=value_leftquote))" \ r"(?(esq)((?!(?P=esq)([\"'`]|&(quot|apos|#3[49]);)).)|((?!(?P=value_leftquote)).)))" \ r"|" \ r"(?!&(quot|apos|#3[49]);)" \ r"(\\{1,8}([ tnr]|[^\s\"'`])" \ r"|" \ r"(?P%[0-9a-f]{2})" \ r"|" \ r"(?(url_esc)[^\s\"'`,;\\&]|[^\s\"'`,;\\])" \ r")" \ r"){4,8000}" \ r"|" \ r"(<[^>]{4,8000}>)" \ r"|" \ r"(\$?\({1,3}[^)]{4,8000}\){1,3})" \ r"|" \ r"(\$?\{{1,3}[^}]{4,8000}\}{1,3})" \ r"|" \ r"(?(wrap)(?(value_leftquote)(?!\\(?P=value_leftquote))|[^\]\)\}]){16,8000})" \ r")" # right_quote = r"(?(value_leftquote)" \ r"(?P(? re.Pattern: """Returns compiled regex pattern""" expression = ''.join([ # cls.directive, # cls.key_left, # fr"(?P{keyword})", # named group required cls.key_right, # cls.separator, # cls.wrap, # cls.string_prefix, # cls.left_quote, # cls.auth_keywords, # cls.value, # cls.right_quote, # ]) return re.compile(expression, flags=re.IGNORECASE | re.DOTALL) ================================================ FILE: credsweeper/common/morpheme_checklist.txt ================================================ ../ .com .org /bin /dev /etc /lib /mnt /opt /sbin /srv /tmp /usr /var 000 111 14159265 18284590 222 333 444 555 65358979 666 71828182 777 80211 888 999 _ack_ _arg _cbc _cfg _clk _con _cpu _dbg_ _dev _dir _div _dma _drv_ _env _err _eth _ext _fig _fmt_ _ghz _i2c_ _id_ _if _in _io_ _irq _is _it _jpg _khz _lan _led_ _mem _mhz _mux _num _on _op_ _or_ _pcm_ _pin _pre _pro _pwr _ram _reg _req _ret _rev _rgb _rsa_ _rw_ _rx_ _sdr_ _src _to _tx_ _un _up _val _vol _wap _wep _wpa _x64 abel abilit able ably abort above absolut abstra academ acce acon activ actor actual actur adapt add ader adjust admi adver advise advisor aes256 affect after aggre agno aight aign akeup alert algo alias alice align aling all alpha alter altit amazon ample anali analy ance anchor anci ancy and anguage angular anima anomaly antenna anth anti any apache api app aram arch are arg_ argc args argv arian arker arpa array arro art ascii ash asia asic ask assembl assert assoc asure asyn ately athon atic atil ating atlas atomic ator attach attack attend attr atus audio audit auri auten auth auto aux avail avatar aver awesom axis azure back badge balanc bank bann bar bas batch batt beac beans beat beef begin behav behind being belo benutz best bias big bill bin/ binar bind bio bipol bit bixby black blan bless blic blish blob blood blue board bob body book bool boost boot boss bot boun box branch break breeze bridge brief brit bro bssid buck buf bugs build builtin bular bulk bull bund burst bus butor button byte cache calen camel camp can capab capac cape captu carat card carri carry cascade case cast catch categor cative cbc_ ccele ccept ccess ceed celebr cell cenar cense cent cert cessor cfg_ chacha chain change channel chant chapter char check chevron child chin chip choices chomp choose chosen chrom chron chunk ciat cilla cinema circle cirrus city cket claims clan class clean clear click clien clip clk_ close closure cloud clud clus cmd cocoa code codi cogn collaps collect color column comb comi comm compa compet compil compl compo compr conc conden conf connect consist console const contact contai conten continu contra contri contro conven conver cookie coord copy core corn correct correl corres corru cost could count course court cove cpu_ crac creat cred cript crit croak cron cross crypt crystal ctive ctrl cubic cue cultur cumulat curr curs custom cut cyan cycle daily danger darken darwin das data date davinci day dead debug decimal decod def delay dele deliv delta demo denc dens dent depen deploy depo depth derive desc desired desktop dest detach detai detect dev/ dev_ develop device devise diag dial dicat dict did dif dig dimen ding diod dir_ direct disab disc disk dismi dispos dissoc dist ditor dity div_ divid dma_ dock docs doct does dog dot double doubt draft dragon drift drive droid drop dul dummy dump dup durin dust dvb dynamic dynamo eadbee easin easy ecdhe ecdsa ecret ected ector ectron eded edge edit edium eeprom effect egory elect eless emai emi empty enabl ence enclave encod encryp ency ende eness engine ength enhanc ensure ente entit entr enum env_ equal erase erial ericsson err_ error erse ersi ertise esam esses estima esult etc/ eth_ etic eting eutron eval evan event exam excee except exclu exist exit expan expe expir expl expo expr ext_ exten exter extra exynos face fact fail false famil far fast fault favor featu fee ferr fetch fied field fifo fig_ figur file fill filter finagle final find fine fire firm first fix flas flat fleet flick flix float flood floor fluent fluid flush focus foo for fossil foun fpga frac frame free freq friend from front frozen fujitsu fulf full func furn futu gain game gang gate gative gauss gen geo gest get ghbor ghz_ gian ging git given global gobble good google grab grace gram grant graph grave gray greater green gregat gregor gress grid gro grpc guard guest guid guish ha1- ha1_ ha2- ha256 ha2_ ha394 ha512 hack half hard has have having havior hdmi head health hear height hello help herm heroku hetero hex hiber hidden hierar high histo hola home hook horizon host houn hours html http hub human humid hybrid iabl ical icon id_rsa iden idle ieee ient if_ ificat ignore illega ilor image imated imer impact imple improve in_ inclu incom indemni index indic indiv iness info infra ingle ings ingular inherit ini injec inn insert insig instead int inval invent inver invoke ion ipv4 ipv6 iron irq_ is_ ished iso_ isolat issue it_ item iter ities iting itiv ivate ixed ixtu ixup ized izer jabber java ject jira jitsi job join journal jpeg jpg_ json jump justif kafka kerberos kernel key khz_ kill kind kinesis kirk know knox kris lab lag lambda lan_ lang large larval last late latit lative launch layer lazy lead leaf least leek left legacy legal lend leng lens let level lexeme lexic lianc liant lib/ library licens lies life lift light lim line lingu link linux list lite little lity live lled llup lness load local lock log long look loop loose lost low luate lysis mac magic mail main maker makes manage manual manuf map marat margin mark mary master match mater matrix max mber mbin mbler mean measur medi medus meet mem_ memb memo ment menu merc merge messag meta meteor method metr mhz_ micha micro middle might migrat millis min mirror misc miss mit mix mmon mmun mnt/ mobile mock mode modi modu monitor month morp mory mote motor mount move mpeg multi mutat mute mux_ nalyz name nary nates nativ nced ncept ncies ndom ndow ned need neigh neo4j ner net neutr never new next nexus nielsen ning nipp nish nism node non nope norm not nsive ntal nter nting null num_ numb numer nuous nvram obj oblique occur ocean ocess oder off often oken oker old olygon on_ oncat one onfig only ookup open opt/ opted opti oracle orbi order ordinar ores organ ories origin orithm ormat orph otorola ottle ound ously out over own pack page pair pale panel par pass patch path patte paw pci pcmcia peer penalt pend people per pets phore photon phrase phys pick pills ping pipe pixel pkcs1 pkcs8 place plain plan play plex plic plod plor plug plus poin polar polic poll poly pond pons pool poon pop port pose posit possib post poun power pre_ pred prefi prese press prev price prim princip prior priv pro_ probe problem proc prod prof prog proj promise prompt prop prote proto provi prox pseudo pster psycho pub pull purcha purple push put pwr_ python qos quantum queri query queue quick quota quote rabbi rack radar radeon radio radius rage rails rain raise ram_ rammar range rank ransit rate rati raw rcept rchite rchive reached react read real reason receive recipe recog recom record redact redir redisson refer reflect refresh reg_ regexp regio regist regs regul rejec relat release reli remar remo rend rent repeat repl repo repre req_ request require resiz resolv resp resul ret_ retai retriev return rev_ revea revel reven rever revisio revoke rgb_ rick ride right rimar rime rine ring ripple rish risk ritte rity river rize road role roll room root ropo rose rotat rotocol rottl rough roun roup row rroga rrupt rticle rudder rule run rxtx sabl sage salt same sampl sams saves savi scala scale scali scen sched schem scipl scont scope scram screen scret scri scro seal searc seccomp second secre sect secur seed seek seen segue sein self sema send sens sent seque seria series serv sessio set sever sex sha1 sha2 sha3 sha5 shadow shape shift ship shoot short shot should show shut sian sible side sight sign similar simpl simul since sine sing sip sites size sizi skip slack slas slave sleep slice slick slide slot smar smooth snap sness sniff snip social sock soft solid solve some sony sort soun source space spacing speak spec speed spell spent spin split spot spray sql src_ srv/ ssh ssl stack stan star stas stat stdin steer stem sten step stic sting ston stop stor strai stream stren stretch strob stroke strong struct stubs stude studio stuff style sub succee succes such suffi suite sum sun supe supp surro suspe swap swift swing switch swizz symbol sync synth sys tabl tag tail tain tape tate tative teacher teams tech tele tell temp tent tera term ternal tery test text than that the thick thing this thor those threat three thrift thro thumb tial tick tics tifier time timi tio tish title titud tizen tmp/ to_ tod toke tolera tomcat too topic tory torial total touch tour trace tract traffic trait tral trans treat trial triang tribut tric tries trigger trip trol trouble troy true trust try tter tune tuni tunnel ture tween twenty twitt txrx txt type typo ultima under unfo unic unio unique unit univ unless unpre until unzip up_ updat upgrade url usa usb use usin usr/ uster util val_ valid valu var/ vari vault vect veeva vendor verbose verify vers vert very video view viol virtual visibl visit visual vita vocab voice void vol_ volat volume vuln wait wake wan wap_ ward warm warn watch wave way weak web week weight well wep_ when where which while white wide widge width will wind wire with wlan wood word work world wort would wow wpa_ wrap writ wrong x64_ xpect xxx year yello yield you zeppelin zero zigbee zing zona zorro ================================================ FILE: credsweeper/config/__init__.py ================================================ ================================================ FILE: credsweeper/config/config.py ================================================ import re from typing import Dict, List, Optional, Set, Any from humanfriendly import parse_size from credsweeper.common.constants import Severity, DEFAULT_PATTERN_LEN from credsweeper.utils.util import Util class Config: """Class that contain configs that can be changed by user.""" NOT_ALLOWED_PATH = [ ".*\\.min\\.js", ".*message.*\\.properties", ".*locale.*\\.properties", ".*makefile.*", ".*package-lock\\.json", ".*package\\.json", ".*\\.css", ".*\\.scss" ] def __init__(self, config: Dict[str, Any]) -> None: self.exclude_patterns: List[re.Pattern] = [re.compile(pattern) for pattern in config["exclude"]["pattern"]] self.exclude_paths: List[str] = config["exclude"]["path"] self.exclude_containers: List[str] = config["exclude"]["containers"] self.exclude_documents: List[str] = config["exclude"]["documents"] self.exclude_extensions: List[str] = config["exclude"]["extension"] self.exclude_lines: Set[str] = set(config["exclude"].get("lines", [])) self.exclude_values: Set[str] = set(config["exclude"].get("values", [])) self.source_extensions: List[str] = config["source_ext"] self.source_quote_ext: List[str] = config["source_quote_ext"] self.find_by_ext_list: List[str] = config["find_by_ext_list"] self.bruteforce_list: List[str] = config["bruteforce_list"] self.check_for_literals: bool = config["check_for_literals"] self.not_allowed_path_pattern = re.compile(f"{Util.get_regex_combine_or(self.NOT_ALLOWED_PATH)}", flags=re.IGNORECASE) self.use_filters: bool = config["use_filters"] self.line_data_output: List[str] = config["line_data_output"] self.candidate_output: List[str] = config["candidate_output"] self.find_by_ext: bool = config["find_by_ext"] self.size_limit: Optional[int] = parse_size(config["size_limit"]) if config["size_limit"] is not None else None self.pedantic: bool = bool(config["pedantic"]) self.depth: int = int(config["depth"]) self.doc: bool = config["doc"] self.severity: Severity = Severity.get(config.get("severity")) self.max_url_cred_value_length: int = int(config["max_url_cred_value_length"]) self.max_password_value_length: int = int(config["max_password_value_length"]) # Trim exclude patterns from space like characters self.exclude_lines = set(line.strip() for line in self.exclude_lines) self.exclude_values = set(line.strip() for line in self.exclude_values) self.pattern_len = config.get("pattern_len", DEFAULT_PATTERN_LEN) ================================================ FILE: credsweeper/credentials/__init__.py ================================================ ================================================ FILE: credsweeper/credentials/augment_candidates.py ================================================ from typing import List from credsweeper.credentials.candidate import Candidate def augment_candidates(candidates: List[Candidate], new_candidates: List[Candidate]): """ Augments candidates with new_candidates if value of line data is not present in the candidates Args: candidates: [IN/OUT] list of candidates to be augmented new_candidates: [IN] list with new candidates """ if not new_candidates: return found_values = set(line_data.value for candidate in candidates # for line_data in candidate.line_data_list) for new_candidate in new_candidates: for line_data in new_candidate.line_data_list: if line_data.value not in found_values: candidates.append(new_candidate) break ================================================ FILE: credsweeper/credentials/candidate.py ================================================ import copy import re from json.encoder import py_encode_basestring_ascii from typing import Any, Dict, List, Optional from credsweeper.common.constants import Severity, Confidence from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData class Candidate: """Candidates that can be credentials. Class contains list of LineData, some attributes from Rule object, and config Parameters: line_data_list: List of LineData patterns: Regular expressions that can be used for detection rule_name: Name of Rule severity: critical/high/medium/low confidence: strong/moderate/weak config: user configs use_ml: Whether the candidate should be validated with ML. If not - ml_probability is set None """ DUMMY_PATTERN = re.compile(r"^") def __init__(self, line_data_list: List[LineData], patterns: List[re.Pattern], rule_name: str, severity: Severity, config: Optional[Config] = None, use_ml: bool = False, confidence: Confidence = Confidence.MODERATE) -> None: self.line_data_list = line_data_list self.patterns = patterns self.rule_name = rule_name self.severity = severity self.config = config self.use_ml = use_ml self.confidence = confidence # None - ML is not applicable or not processed yet; float - the ml decision above ml_threshold # Note: -1.0 is possible too for some activation functions in ml model, so let avoid negative values self.ml_probability: Optional[float] = None def compare(self, other: 'Candidate') -> bool: """Comparison method - checks only result of final cred""" if self.rule_name == other.rule_name \ and self.severity == other.severity \ and self.confidence == other.confidence \ and self.use_ml == other.use_ml \ and self.ml_probability == other.ml_probability \ and len(self.line_data_list) == len(other.line_data_list): for i, j in zip(self.line_data_list, other.line_data_list): if i.compare(j): continue break else: # all line_data are equal return True return False @staticmethod def _encode(value: Any) -> Any: """Encode value to the base string ascii Args: value: Any type of value to be encoded """ if isinstance(value, str): return py_encode_basestring_ascii(value) return value def to_str(self, subtext: bool = False, hashed: bool = False) -> str: """Represent candidate with subtext or|and hashed values""" return f"rule: {self.rule_name}" \ f" | severity: {self.severity.value}" \ f" | confidence: {self.confidence.value}" \ f" | ml_probability: {self.ml_probability}" \ f" | line_data_list: [{', '.join([x.to_str(subtext, hashed) for x in self.line_data_list])}]" def __str__(self): return self.to_str() def __repr__(self): return self.to_str(subtext=True) def to_json(self, hashed: bool, subtext: bool) -> Dict: """Convert credential candidate object to dictionary. Return: Dictionary object generated from current credential candidate """ full_output = { "patterns": [pattern.pattern for pattern in self.patterns], "rule": self.rule_name, "severity": self.severity.value, "confidence": self.confidence.value, "use_ml": self.use_ml, "ml_probability": self.ml_probability, # put the array to end to make json more readable "line_data_list": [line_data.to_json(hashed, subtext) for line_data in self.line_data_list], } if self.config is not None: reported_output = {k: v for k, v in full_output.items() if k in self.config.candidate_output} else: reported_output = full_output return reported_output def to_dict_list(self, hashed: bool, subtext: bool) -> List[dict]: """Convert credential candidate object to List[dict]. Return: List[dict] object generated from current credential candidate """ reported_output = [] json_output = self.to_json(hashed, subtext) refined_data = copy.deepcopy(json_output) del refined_data["line_data_list"] for line_data in json_output["line_data_list"]: line_data.update(refined_data) for key in line_data.keys(): line_data[key] = self._encode(line_data[key]) reported_output.append(line_data) return reported_output @classmethod def get_dummy_candidate(cls, config: Config, file_path: str, file_type: str, info: str, rule_name: str): """Create dummy instance to use in searching file by extension""" return cls( # line_data_list=[LineData(config, '', -1, 0, file_path, file_type, info, cls.DUMMY_PATTERN)], patterns=[cls.DUMMY_PATTERN], # rule_name=rule_name, # severity=Severity.INFO, # config=config, # confidence=Confidence.WEAK) ================================================ FILE: credsweeper/credentials/candidate_group_generator.py ================================================ from typing import Dict, List, Tuple from credsweeper.credentials.candidate import Candidate from credsweeper.credentials.candidate_key import CandidateKey class CandidateGroupGenerator: """CandidateGroupGenerator""" def __init__(self) -> None: self.grouped_candidates: Dict[CandidateKey, List[Candidate]] = {} @property def grouped_candidates(self) -> Dict[CandidateKey, List[Candidate]]: """property getter""" return self._grouped_candidates @grouped_candidates.setter def grouped_candidates(self, grouped_candidates: Dict[CandidateKey, List[Candidate]]) -> None: """property setter""" self._grouped_candidates = grouped_candidates def __contains__(self, key: CandidateKey) -> bool: return key in self.grouped_candidates def __getitem__(self, key) -> List[Candidate]: return self.grouped_candidates[key] def __setitem__(self, key: CandidateKey, value: List[Candidate]) -> None: self.grouped_candidates[key] = value def __len__(self) -> int: return len(self.grouped_candidates) def items(self) -> List[Tuple[CandidateKey, List[Candidate]]]: """getter""" return list(self.grouped_candidates.items()) ================================================ FILE: credsweeper/credentials/candidate_key.py ================================================ from typing import Tuple from credsweeper.credentials.line_data import LineData class CandidateKey: """Class used to identify credential candidates. Candidates that detected same value on same string in a same file would have identical CandidateKey """ def __init__(self, line_data: LineData): self.path: str = line_data.path self.line_num: int = line_data.line_num self.value_start: int = line_data.value_start self.value_end: int = line_data.value_end self.key: Tuple[str, int, int, int] = (self.path, self.line_num, self.value_start, self.value_end) self.__line = line_data.line def __hash__(self): return hash(self.key) def __eq__(self, other): return self.key == other.key def __ne__(self, other): return not bool(self == other) def __repr__(self) -> str: return f"{self.key}:{self.__line}" ================================================ FILE: credsweeper/credentials/credential_manager.py ================================================ import logging from multiprocessing import Manager from typing import List, Dict, Tuple from credsweeper.credentials.candidate import Candidate from credsweeper.credentials.candidate_group_generator import CandidateGroupGenerator, CandidateKey logger = logging.getLogger(__name__) class CredentialManager: """The manager allows you to store, add and delete separate credit candidates.""" def __init__(self) -> None: self.candidates: List[Candidate] = list(Manager().list()) def clear_credentials(self) -> None: """Clear credential candidates stored in the manager.""" self.candidates.clear() def len_credentials(self) -> int: """Get number of credential candidates stored in the manager. Return: Non-negative integer """ return len(self.candidates) def get_credentials(self) -> List[Candidate]: """Get all credential candidates stored in the manager. Return: List with all Candidate objects stored in manager """ return self.candidates def set_credentials(self, candidates: List[Candidate]) -> None: """Remove all current credentials candidates from the manager and add new credentials. Args: candidates: List with candidates to replace current candidates in the manager """ self.candidates = candidates def add_credential(self, candidate: Candidate) -> None: """Add credential candidate to the manager. Args: candidate: credential candidate to be added """ self.candidates.append(candidate) def remove_credential(self, candidate: Candidate) -> None: """Remove credential candidate from the manager. Args: candidate: credential candidate to be removed """ self.candidates.remove(candidate) def purge_duplicates(self) -> int: """Purge duplicates candidates which may appear in overlaps during long line scan. Returns: number of removed duplicates """ candidates_dict: Dict[Tuple[str, str, str, int, int, int, int, int, int, int], Candidate] = {} before = len(self.candidates) for i in self.candidates: ld = i.line_data_list[0] candidate_key = ( i.rule_name, # ld.path, # ld.info, # ld.line_pos, # ld.variable_start, # ld.variable_end, # ld.separator_start, # ld.separator_end, # ld.value_start, # ld.value_end) if candidate_key in candidates_dict: # check precisely - compare with the values candidate_dict = candidates_dict[candidate_key] if not candidate_dict.compare(i): ld_ = candidate_dict.line_data_list[0] logger.warning("Check %s and %s", (ld_.variable, ld_.value), (ld.variable, ld.value)) else: candidates_dict[candidate_key] = i self.candidates = list(candidates_dict.values()) after = len(self.candidates) return before - after def group_credentials(self) -> CandidateGroupGenerator: """Join candidates that reference same secret value in the same line. Candidate can belong to two groups in the same time if it has more than one LineData object inside Return: Contain dictionary of [path, line_num, value] -> credential candidates list """ groups = CandidateGroupGenerator() for credential_candidate in self.get_credentials(): for line_data in credential_candidate.line_data_list[:1]: # Match by file path+line num+value. Value required so two different credentials still be # processed independently candidate_key = CandidateKey(line_data) if candidate_key in groups: groups[candidate_key].append(credential_candidate) else: groups[candidate_key] = [credential_candidate] return groups ================================================ FILE: credsweeper/credentials/line_data.py ================================================ import contextlib import hashlib import re import string from functools import cached_property from typing import Any, Dict, Optional, Tuple from colorama import Fore, Style from credsweeper.common.constants import MAX_LINE_LENGTH, UTF_8, StartEnd, ML_HUNK from credsweeper.config.config import Config from credsweeper.utils.util import Util class LineData: """Object to treat and store scanned line related data. Parameters: key: Optional[str] = None line: string variable, line line_num: int variable, number of line in file path: string variable, path to file file_type: string variable, extension of file '.txt' info: additional info about how the data was detected pattern: regex pattern, detected pattern in line separator: optional string variable, separators between variable and value separator_start: optional variable, separator position start value: optional string variable, detected value in line variable: optional string variable, detected variable in line """ quotation_marks = ('"', "'", '`') comment_starts = ("//", "* ", "# ", "/*", "|\\w+?\\>|\\&)") line_endings = re.compile(r"\\{1,8}[nr]") # https://en.wikipedia.org/wiki/Percent-encoding url_percent_split = re.compile(r"%(21|23|24|26|27|28|29|2a|2b|2c|2f|3a|3b|3d|3f|40|5b|5d)", flags=re.IGNORECASE) url_unicode_split = re.compile(r"\\u00(0000)?(21|23|24|26|27|28|29|2a|2b|2c|2f|3a|3b|3d|3f|40|5b|5d)", flags=re.IGNORECASE) # some symbols e.g. double quotes cannot be in URL string https://www.ietf.org/rfc/rfc1738.txt # \ - was added for case of url in escaped string \u0026amp; - means escaped & in HTML url_scheme_part_regex = re.compile(r"[0-9A-Za-z.-]{3}") url_chars_not_allowed_pattern = re.compile(r'[\s"<>\[\]^~`{|}]') url_value_pattern = re.compile(r'[^\s&;"<>\[\]^~`{|}]+[&;][^\s=;"<>\[\]^~`{|}]{3,80}=[^\s;&="<>\[\]^~`{|}]{1,80}') variable_strip_pattern = string.whitespace + """,'"-;""" INITIAL_WRONG_POSITION = -3 EXCEPTION_POSITION = -2 def __init__( self, # config: Config, # line: str, # line_pos: int, # line_num: int, # path: str, # file_type: str, # info: str, # pattern: re.Pattern, # match_obj: Optional[re.Match] = None) -> None: self.config = config self.line: str = line self.line_pos: int = line_pos self.line_num: int = line_num self.path: str = path self.file_type: str = file_type self.info: str = info self.pattern: re.Pattern = pattern # do not store match object due it cannot be pickled with multiprocessing # start - end position of matched object self.value_start = LineData.INITIAL_WRONG_POSITION self.value_end = LineData.INITIAL_WRONG_POSITION self.key: Optional[str] = None self.separator: Optional[str] = None self.separator_start: int = LineData.INITIAL_WRONG_POSITION self.separator_end: int = LineData.INITIAL_WRONG_POSITION self.value: Optional[str] = None self.variable: Optional[str] = None self.variable_start = LineData.INITIAL_WRONG_POSITION self.variable_end = LineData.INITIAL_WRONG_POSITION self.value_leftquote: Optional[str] = None self.value_rightquote: Optional[str] = None # is set when variable & value are in URL for any source type self.url_part = False self.wrap = None self._3d_escaped_separator = False self.initialize(match_obj) # the line is very useful for debug breakpoint pass # pylint: disable=W0107 def compare(self, other: 'LineData') -> bool: """Comparison method - skip whole line and checks only when variable and value are the same""" if self.path == other.path \ and self.info == other.info \ and self.line_num == other.line_num \ and self.value_start == other.value_start \ and self.variable == other.variable \ and self.value == other.value: return True return False def initialize(self, match_obj: Optional[re.Match] = None) -> None: """Apply regex to the candidate line and set internal fields based on match.""" if not isinstance(match_obj, re.Match) and isinstance(self.pattern, re.Pattern): match_obj = self.pattern.search(self.line, endpos=MAX_LINE_LENGTH) if match_obj is None: return def get_group_from_match_obj(_match_obj: re.Match, group: str) -> Any: with contextlib.suppress(Exception): return _match_obj.group(group) return None def get_span_from_match_obj(_match_obj: re.Match, group: str) -> Tuple[int, int]: with contextlib.suppress(Exception): span = _match_obj.span(group) return span[0], span[1] return LineData.EXCEPTION_POSITION, LineData.EXCEPTION_POSITION self.key = get_group_from_match_obj(match_obj, "keyword") self.separator = get_group_from_match_obj(match_obj, "separator") self.separator_start, self.separator_end = get_span_from_match_obj(match_obj, "separator") self.value = get_group_from_match_obj(match_obj, "value") self.value_start, self.value_end = get_span_from_match_obj(match_obj, "value") self.variable = get_group_from_match_obj(match_obj, "variable") self.variable_start, self.variable_end = get_span_from_match_obj(match_obj, "variable") self.value_leftquote = get_group_from_match_obj(match_obj, "value_leftquote") self.value_rightquote = get_group_from_match_obj(match_obj, "value_rightquote") self.wrap = get_group_from_match_obj(match_obj, "wrap") # percent encoded '=' in url self._3d_escaped_separator = bool(self.separator) and "%3D" == self.separator.upper() self.sanitize_value() self.sanitize_variable() def sanitize_value(self): """Clean found value from extra artifacts. Correct positions if changed.""" # process the quotation workaround before cached properties invocation if not self.value_leftquote and not self.value_rightquote: while self.value: first_symbol_code = ord(self.value[0]) last_symbol_code = ord(self.value[-1]) if 0x2018 <= first_symbol_code <= 0x201B and 0x2018 <= last_symbol_code <= 0x201B: self.value_leftquote = self.value_rightquote = "'" self.value = self.value[:-1] self.value_end -= 1 self.value = self.value[1:] self.value_start += 1 elif 0x201C <= first_symbol_code <= 0x201F and 0x201C <= last_symbol_code <= 0x201F: self.value_leftquote = self.value_rightquote = '"' self.value = self.value[1:] self.value_start += 1 self.value = self.value[:-1] self.value_end -= 1 else: break if self.variable and self.value and not self.is_well_quoted_value: # sanitize is actual step for keyword pattern only _value = self.value self.clean_url_parameters() self.clean_bash_parameters() self.clean_toml_parameters() self.clean_tag_parameters() if 0 <= self.value_start and 0 <= self.value_end and len(self.value) < len(_value): start = _value.find(self.value) self.value_start += start self.value_end = self.value_start + len(self.value) def check_url_part(self) -> bool: """Determines whether value is part of url like line""" line_before_value = self.line[:self.value_start] url_pos = -1 find_pos = 0 while find_pos < self.value_start: # find rightmost pattern find_pos = line_before_value.find("://", find_pos) if -1 == find_pos: break url_pos = find_pos find_pos += 3 # whether the line has url start pattern self.url_part = 3 <= url_pos self.url_part &= bool(self.url_scheme_part_regex.match(line_before_value, pos=url_pos - 3, endpos=url_pos)) self.url_part &= not self.url_chars_not_allowed_pattern.search(line_before_value, pos=url_pos + 3) self.url_part |= self.line[self.variable_start - 1] in "?&" if 0 < self.variable_start else False self.url_part |= bool(self.url_value_pattern.match(self.value)) self.url_part |= self._3d_escaped_separator return self.url_part def clean_url_parameters(self) -> None: """Clean url address from 'query parameters'. If line seem to be a URL - split by & character. Variable should be right most value after & or ? ([-1]). And value should be left most before & ([0]) """ # skip sanitize in case of URL credential rule - the regex is mature enough if self.check_url_part() and not self.variable.endswith("://"): # all checks have passed - line before the value may be a URL self.variable = self.variable.rsplit('&')[-1].rsplit('?')[-1].rsplit(';')[-1] self.value = self.value.split('&', maxsplit=1)[0].split(';', maxsplit=1)[0].split('#', maxsplit=1)[0] self.value = self.url_unicode_split.split(self.value)[0] if self._3d_escaped_separator: self.value = self.url_percent_split.split(self.value)[0] def clean_bash_parameters(self) -> None: """Split variable and value by bash special characters, if line assumed to be CLI command.""" if self.variable.startswith("-"): value_spl = self.bash_param_split.split(self.value) # If variable name starts with `-` (usual case for args in CLI) # and value can be split by bash special characters if len(value_spl) > 1: self.value = value_spl[0] if ' ' not in self.value and ("\\n" in self.value or "\\r" in self.value): value_whsp = self.line_endings.split(self.value) if len(value_whsp) > 1: self.value = value_whsp[0] def clean_toml_parameters(self) -> None: """Parenthesis, curly and squared brackets may be caught in TOML format and bash. Simple clearing""" cleaning_required = self.value and self.value[-1] in ['}', ']', ')'] line_before_value = self.line[:self.value_start] if self.value_start and 0 <= self.value_start else "" while cleaning_required: cleaning_required = False for left, right in [('{', '}'), ('[', ']'), ('(', ')')]: if self.value.endswith(right) and left not in self.value \ and line_before_value.count(left) > line_before_value.count(right): # full match does not reasonable to implement due open character may be in other line self.value = self.value[:-1] cleaning_required = True def clean_tag_parameters(self) -> None: """Remove closing tag from value if the opened is somewhere before in line""" cleaning_required = self.value and self.value.endswith('>') while cleaning_required: closing_tag_pos = self.value.rfind("') else: break def sanitize_variable(self) -> None: """Remove trailing spaces, dashes and quotations around the variable. Correct position.""" sanitized_var_len = 0 variable = self.variable while self.variable and sanitized_var_len != len(self.variable): sanitized_var_len = len(self.variable) self.variable = self.variable.strip(self.variable_strip_pattern) if self.variable.endswith('\\'): self.variable = self.variable[:-1] if self.variable.startswith('{') and '}' in self.line[self.variable_end:]: # TOML case self.variable = self.variable[1:] if variable and len(self.variable) < len(variable) and 0 <= self.variable_start and 0 <= self.variable_end: start = variable.find(self.variable) self.variable_start += start self.variable_end = self.variable_start + len(self.variable) def is_comment(self) -> bool: """Check if line with credential is a comment. Return: True if line is a comment, False otherwise """ cleaned_line = self.line.strip() for comment_start in self.comment_starts: if cleaned_line.startswith(comment_start): return True return False @cached_property def is_well_quoted_value(self) -> bool: """Well quoted value - means the value has been quoted or has line wrap""" result = False if self.value_leftquote and self.value_rightquote: if self.value_leftquote == self.value_rightquote: # regex caught well return True if 1 == len(self.value_leftquote): leftquote = self.value_leftquote else: # right side symbol should be a quote leftquote = self.value_leftquote[-1] if leftquote not in self.quotation_marks: leftquote = "" if 1 == len(self.value_rightquote): rightquote = self.value_rightquote else: # clean \ sign in escaping text for q in self.value_rightquote: if q in self.quotation_marks: rightquote = q break else: rightquote = "" result = bool(leftquote) and ( # bool(rightquote) and (leftquote == rightquote) # normal case or '\\' == self.value_rightquote and '\\' == self.line[-1] # line wrap ) elif self.value_leftquote: result = ( # ('\\' == self.value_rightquote or '\\' == self.value[-1]) and '\\' == self.line[-1] # line wrap or '.php' == self.file_type # php may use multiline string or 3 == self.value_leftquote.count('"') or 3 == self.value_leftquote.count("'") # python multiline ) return result @cached_property def is_quoted(self) -> bool: """Check if variable and value in a quoted string. Return: True if candidate in a quoted string, False otherwise """ left_quote = None if 0 < self.variable_start: for i in self.line[:self.variable_start]: if i in ('"', "'", '`'): left_quote = i break right_quote = None if len(self.line) > self.value_end: for i in self.line[self.value_end:]: if i in ('"', "'", '`'): right_quote = i break result = bool(left_quote) and bool(right_quote) and left_quote == right_quote return result def is_source_file(self) -> bool: """Check if file with credential is a source code file or not (data, log, plain text). Return: True if file is source file, False otherwise """ if not self.path: return False if Util.get_extension(self.path) in self.config.source_extensions: return True return False def is_source_file_with_quotes(self) -> bool: """Check if file with credential require quotation for string literals. Return: True if file require quotation, False otherwise """ file_type = self.file_type or Util.get_extension(self.path) return bool(file_type) and file_type in self.config.source_quote_ext @staticmethod def get_hash_or_subtext( text: Optional[str], # hashed: bool, # cut_pos: Optional[StartEnd] = None, # ) -> Optional[str]: """Represent not empty text with hash or a "beauty" subtext if required Args: text: str - input string hashed: bool - whether the text will be hashed and returned cut_pos: Optional[StartEnd] - start, end positions which text must be kept in output Return: sha256 hash in hex representation of input text with UTF-8 encodings or subtext from start to end, or original text as is """ if text: if hashed: text = hashlib.sha256(text.encode(UTF_8, errors="strict")).hexdigest() elif cut_pos is not None: if 2 * ML_HUNK < cut_pos.end - cut_pos.start: # subtext positions exceed the limit text = text[cut_pos.start:cut_pos.end] else: strip_text = text.strip() if 2 * ML_HUNK >= len(strip_text): # stripped text length meets the limit text = strip_text else: offset = len(text) - len(text.lstrip()) center = (cut_pos.end + cut_pos.start - offset) >> 1 text = Util.subtext(strip_text, center, ML_HUNK) return text def to_str(self, subtext: bool = False, hashed: bool = False) -> str: """Represent line_data with subtext or|and hashed values""" cut_pos = StartEnd(self.variable_start, self.value_end) if subtext else None return f"path: {self.path}" \ f" | line_num: {self.line_num}" \ f" | value: '{self.get_hash_or_subtext(self.value, hashed)}'" \ f" | line: '{self.get_hash_or_subtext(self.line, hashed, cut_pos)}'" def __str__(self): return self.to_str() def __repr__(self): return self.to_str(subtext=True) def to_json(self, hashed: bool, subtext: bool) -> Dict: """Convert line data object to dictionary. Return: Dictionary object generated from current line data """ cut_pos = StartEnd(self.variable_start if 0 <= self.variable_start else self.value_start, self.value_end) if subtext else None if isinstance(self.value, str): entropy = round(Util.get_shannon_entropy(self.value), 5) else: entropy = None full_output = { "key": self.key, "line": self.get_hash_or_subtext(self.line, hashed, cut_pos), "line_num": self.line_num, "path": self.path, # info may contain variable name - so let it be hashed if requested "info": self.get_hash_or_subtext(self.info, hashed), "pattern": self.pattern.pattern, "variable": self.get_hash_or_subtext(self.variable, hashed), "variable_start": self.variable_start, "variable_end": self.variable_end, "separator": self.separator, "separator_start": self.separator_start, "separator_end": self.separator_end, "value": self.get_hash_or_subtext(self.value, hashed), "value_start": self.value_start, "value_end": self.value_end, "entropy": entropy, "value_leftquote": self.value_leftquote, "value_rightquote": self.value_rightquote, } reported_output = {k: v for k, v in full_output.items() if k in self.config.line_data_output} return reported_output def get_colored_line(self, hashed: bool, subtext: bool = False) -> str: """Represents the LineData with a value, separator, and variable color formatting""" if hashed: # return colored hash return Fore.LIGHTGREEN_EX \ + self.get_hash_or_subtext(self.line, hashed, StartEnd(self.value_start, self.value_end) if subtext else None) \ + Style.RESET_ALL # at least, value must present line = self.line[:self.value_start] \ + Fore.LIGHTYELLOW_EX \ + self.line[self.value_start:self.value_end] \ + Style.RESET_ALL \ + self.line[self.value_end:] # noqa: E127 # separator may be missing if 0 <= self.separator_start < self.separator_end <= self.value_start: line = line[:self.separator_start] \ + Fore.LIGHTGREEN_EX \ + line[self.separator_start:self.separator_end] \ + Style.RESET_ALL \ + line[self.separator_end:] # variable may be missing if 0 <= self.separator_start \ and 0 <= self.variable_start < self.variable_end <= self.separator_end <= self.value_start \ or 0 <= self.variable_start < self.variable_end <= self.value_start: line = line[:self.variable_start] \ + Fore.LIGHTBLUE_EX \ + line[self.variable_start:self.variable_end] \ + Style.RESET_ALL \ + line[self.variable_end:] if subtext: # display part of the text, centered around the start of the value, style reset at the end as a fallback line = f"{Util.subtext(line, self.value_start + len(line) - len(self.line), ML_HUNK)}{Style.RESET_ALL}" return line ================================================ FILE: credsweeper/deep_scanner/__init__.py ================================================ ================================================ FILE: credsweeper/deep_scanner/abstract_scanner.py ================================================ import contextlib import datetime import logging from abc import abstractmethod, ABC from typing import List, Optional, Tuple, Any, Generator from credsweeper.common.constants import RECURSIVE_SCAN_LIMITATION, MIN_DATA_LEN, DEFAULT_ENCODING, UTF_8, \ MIN_VALUE_LENGTH from credsweeper.config.config import Config from credsweeper.credentials.augment_candidates import augment_candidates from credsweeper.credentials.candidate import Candidate from credsweeper.file_handler.byte_content_provider import ByteContentProvider from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.descriptor import Descriptor from credsweeper.file_handler.diff_content_provider import DiffContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor from credsweeper.file_handler.string_content_provider import StringContentProvider from credsweeper.file_handler.struct_content_provider import StructContentProvider from credsweeper.file_handler.text_content_provider import TextContentProvider from credsweeper.scanner.scanner import Scanner logger = logging.getLogger(__name__) class AbstractScanner(ABC): """Base abstract class for all recursive scanners""" @property @abstractmethod def config(self) -> Config: """Abstract property to be defined in DeepScanner""" raise NotImplementedError(__name__) @property @abstractmethod def scanner(self) -> Scanner: """Abstract property to be defined in DeepScanner""" raise NotImplementedError(__name__) @abstractmethod def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Abstract method to be defined in DeepScanner""" raise NotImplementedError(__name__) @staticmethod @abstractmethod def get_deep_scanners(data: bytes, descriptor: Descriptor, depth: int) -> Tuple[List[Any], List[Any]]: """Returns possibly scan methods for the data depends on content and fallback scanners""" raise NotImplementedError(__name__) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def recursive_scan( self, # data_provider: DataContentProvider, # depth: int = 0, # recursive_limit_size: int = 0) -> List[Candidate]: """Recursive function to scan files which might be containers like ZIP archives Args: 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 """ candidates: List[Candidate] = [] if 0 > depth: # break recursion if maximal depth is reached logger.debug("Bottom reached %s recursive_limit_size:%d", data_provider.file_path, recursive_limit_size) return candidates depth -= 1 if MIN_DATA_LEN > len(data_provider.data): # break recursion for minimal data size logger.debug("Too small data: size=%d, depth=%d, limit=%d, path=%s, info=%s", len(data_provider.data), depth, recursive_limit_size, data_provider.file_path, data_provider.info) return candidates logger.debug("Start data_scan: size=%d, depth=%d, limit=%d, path=%s, info=%s", len(data_provider.data), depth, recursive_limit_size, data_provider.file_path, data_provider.info) if FilePathExtractor.is_find_by_ext_file(self.config, data_provider.file_type): # Skip scanning file and makes fake candidate due the extension is suspicious dummy_candidate = Candidate.get_dummy_candidate(self.config, data_provider.file_path, data_provider.file_type, data_provider.info, FilePathExtractor.FIND_BY_EXT_RULE) candidates.append(dummy_candidate) else: new_candidates = self.deep_scan_with_fallback(data_provider, depth, recursive_limit_size) augment_candidates(candidates, new_candidates) return candidates # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @staticmethod def key_value_combination(structure: dict) -> Generator[Tuple[Any, Any], None, None]: """Combine items by `key` and `value` from a dictionary for augmentation {..., "key": "api_key", "value": "XXXXXXX", ...} -> ("api_key", "XXXXXXX") """ for key_id in ("key", "KEY", "Key"): if key_id in structure: struct_key = structure.get(key_id) break else: struct_key = None if isinstance(struct_key, bytes): # sqlite table may produce bytes for `key` with contextlib.suppress(UnicodeError): struct_key = struct_key.decode(UTF_8) # only str type is common used for the augmentation if struct_key and isinstance(struct_key, str): for value_id in ("value", "VALUE", "Value"): if value_id in structure: struct_value = structure.get(value_id) if struct_value and isinstance(struct_value, (str, bytes)): yield struct_key, struct_value # break in successful case break # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @staticmethod def structure_processing(structure: Any) -> Generator[Tuple[Any, Any], None, None]: """Yields pair `key, value` from given structure if applicable""" if isinstance(structure, dict): # transform dictionary to list for key, value in structure.items(): if not value: # skip empty values continue if isinstance(value, (list, tuple)): if 1 == len(value): # simplify some structures like YAML when single item in new line is a value yield key, value[0] continue # all other data will be precessed in next code yield key, value yield from AbstractScanner.key_value_combination(structure) elif isinstance(structure, (list, tuple)): # enumerate the items to fit for return structure for key, value in enumerate(structure): yield key, value else: logger.warning("Not supported type:%s val:%s", str(type(structure)), repr(structure)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def structure_scan( self, # struct_provider: StructContentProvider, # depth: int, # recursive_limit_size: int) -> List[Candidate]: """Recursive function to scan structured data Args: 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 """ candidates: List[Candidate] = [] logger.debug("Start struct_scan: depth=%d, limit=%d, path=%s, info=%s", depth, recursive_limit_size, struct_provider.file_path, struct_provider.info) if 0 > depth: # break recursion if maximal depth is reached logger.debug("Bottom reached %s recursive_limit_size:%d", struct_provider.file_path, recursive_limit_size) return candidates depth -= 1 augmented_lines_for_keyword_rules = [] for key, value in AbstractScanner.structure_processing(struct_provider.struct): # a keyword rule may be applicable for `key` (str only) and `value` (str, bytes) keyword_match = bool(isinstance(key, str) and self.scanner.keywords_required_substrings_check(key.lower())) if isinstance(value, (dict, list, tuple)) and value: # recursive scan for not empty structured `value` val_struct_provider = StructContentProvider(struct=value, file_path=struct_provider.file_path, file_type=struct_provider.file_type, info=f"{struct_provider.info}|STRUCT:{key}") new_candidates = self.structure_scan(val_struct_provider, depth, recursive_limit_size) candidates.extend(new_candidates) elif isinstance(value, bytes): # recursive data scan if MIN_DATA_LEN <= len(value): bytes_struct_provider = DataContentProvider(data=value, file_path=struct_provider.file_path, file_type=struct_provider.file_type, info=f"{struct_provider.info}|BYTES:{key}") new_limit = recursive_limit_size - len(value) new_candidates = self.recursive_scan(bytes_struct_provider, depth, new_limit) candidates.extend(new_candidates) if keyword_match and MIN_VALUE_LENGTH <= len(value): augmented_lines_for_keyword_rules.append(f"{key} = {repr(value)}") elif isinstance(value, str): # recursive text scan with transformation into bytes stripped_value = value.strip() if MIN_DATA_LEN <= len(stripped_value): # recursive scan only for data which may be decoded at least with contextlib.suppress(UnicodeError): data = stripped_value.encode(encoding=DEFAULT_ENCODING, errors='strict') str_struct_provider = DataContentProvider(data=data, file_path=struct_provider.file_path, file_type=struct_provider.file_type, info=f"{struct_provider.info}|STRING:{key}") new_limit = recursive_limit_size - len(str_struct_provider.data) new_candidates = self.recursive_scan(str_struct_provider, depth, new_limit) candidates.extend(new_candidates) if keyword_match and MIN_VALUE_LENGTH <= len(stripped_value): augmented_lines_for_keyword_rules.append(f"{key} = {repr(stripped_value)}") elif not value or isinstance(value, (int, float, datetime.date, datetime.datetime)): # skip useless types pass else: logger.warning("Not supported type:%s value(%s)", str(type(value)), str(value)) if augmented_lines_for_keyword_rules: str_provider = StringContentProvider(augmented_lines_for_keyword_rules, file_path=struct_provider.file_path, file_type=struct_provider.file_type, info=f"{struct_provider.info}|KEYWORD") new_candidates = self.scanner.scan(str_provider) augment_candidates(candidates, new_candidates) return candidates # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def deep_scan_with_fallback(self, data_provider: DataContentProvider, depth: int, recursive_limit_size: int) -> List[Candidate]: """Scans with deep scanners and fallback scanners if possible Args: 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 """ candidates: List[Candidate] = [] deep_scanners, fallback_scanners = self.get_deep_scanners(data_provider.data, data_provider.descriptor, depth) fallback = True for scan_class in deep_scanners: new_candidates = scan_class.data_scan(self, data_provider, depth, recursive_limit_size) if new_candidates is None: # scanner did not recognise the content type continue augment_candidates(candidates, new_candidates) # this scan is successful, so fallback is not necessary fallback = False if fallback: for scan_class in fallback_scanners: fallback_candidates = scan_class.data_scan(self, data_provider, depth, recursive_limit_size) if fallback_candidates is None: continue augment_candidates(candidates, fallback_candidates) # use only first successful fallback scanner break return candidates # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def scan(self, content_provider: ContentProvider, depth: int, recursive_limit_size: Optional[int] = None) -> List[Candidate]: """Initial scan method to launch recursive scan. Skips ByteScanner to prevent extra scan Args: 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 """ recursive_limit_size = recursive_limit_size if isinstance(recursive_limit_size, int) else RECURSIVE_SCAN_LIMITATION candidates: List[Candidate] = [] data: Optional[bytes] = None if isinstance(content_provider, (TextContentProvider, ByteContentProvider)): # Feature to scan files which might be containers data = content_provider.data info = f"FILE:{content_provider.file_path}" elif isinstance(content_provider, DiffContentProvider) and content_provider.diff: candidates = self.scanner.scan(content_provider) # Feature to scan binary diffs diff = content_provider.diff[0].get("line") # the check for legal fix mypy issue if isinstance(diff, bytes): data = diff info = f"DIFF:{content_provider.file_path}" else: logger.warning("Content provider %s does not support deep scan", type(content_provider)) info = "NA" if data: data_provider = DataContentProvider(data=data, file_path=content_provider.file_path, file_type=content_provider.file_type, info=content_provider.info or info) new_candidates = self.deep_scan_with_fallback(data_provider, depth, recursive_limit_size - len(data)) augment_candidates(candidates, new_candidates) return candidates ================================================ FILE: credsweeper/deep_scanner/byte_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.byte_content_provider import ByteContentProvider from credsweeper.file_handler.data_content_provider import DataContentProvider logger = logging.getLogger(__name__) class ByteScanner(AbstractScanner, ABC): """Implements plain data scanning""" def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to represent data as plain text with splitting by lines and scan as text lines""" byte_content_provider = ByteContentProvider(content=data_provider.data, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|RAW") return self.scanner.scan(byte_content_provider) ================================================ FILE: credsweeper/deep_scanner/bzip2_scanner.py ================================================ import bz2 import logging from abc import ABC from pathlib import Path from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class Bzip2Scanner(AbstractScanner, ABC): """Implements bzip2 scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/Bzip2""" if data.startswith(b"\x42\x5A\x68") and 10 <= len(data) \ and 0x31 <= data[3] <= 0x39 \ and 4 == data.find(b"\x31\x41\x59\x26\x53\x59", 4, 10): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts data from bzip2 archive and launches data_scan""" try: file_path = Path(data_provider.file_path) new_path = file_path.as_posix() if ".bz2" == file_path.suffix: new_path = new_path[:-4] bzip2_content_provider = DataContentProvider(data=bz2.decompress(data_provider.data), file_path=new_path, file_type=Util.get_extension(new_path), info=f"{data_provider.info}|BZIP2:{file_path}") new_limit = recursive_limit_size - len(bzip2_content_provider.data) bzip2_candidates = self.recursive_scan(bzip2_content_provider, depth, new_limit) return bzip2_candidates except Exception as bzip2_exc: logger.warning("%s:%s", data_provider.file_path, bzip2_exc) return None ================================================ FILE: credsweeper/deep_scanner/crx_scanner.py ================================================ import logging import struct from abc import ABC from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider logger = logging.getLogger(__name__) class CrxScanner(AbstractScanner, ABC): """Implements CRX files scanning with cut-off prefix""" @staticmethod def match(data: bytes | bytearray) -> bool: """Returns True if prefix match""" if data.startswith((b"Cr24\x02\x00\x00\x00", b"Cr24\x03\x00\x00\x00")) and 32 < len(data): return True return False @staticmethod def zip_extract(data: bytes) -> bytes: """Extracts zip payload after signature block""" pubkey_length = struct.unpack(" Optional[List[Candidate]]: """Tries cut-off header and use ZIP payload""" try: zip_data = CrxScanner.zip_extract(data_provider.data) zip_content_provider = DataContentProvider(data=zip_data, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|CRX") new_limit = recursive_limit_size - len(zip_data) crx_candidates = self.recursive_scan(zip_content_provider, depth, new_limit) return crx_candidates except Exception as exc: logger.warning(exc) return None ================================================ FILE: credsweeper/deep_scanner/csv_scanner.py ================================================ import csv import io import logging import re from abc import ABC from typing import List, Optional, Dict, Any from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.struct_content_provider import StructContentProvider logger = logging.getLogger(__name__) class CsvScanner(AbstractScanner, ABC): """Implements CSV scanning""" sniffer = csv.Sniffer() # do not use space as separator to avoid hallucinations DELIMITERS = ",;\t|\x1F" CSV_PATTERN = re.compile(b"[^\r\n]{1,8000}[,;\t|\x1F][^\r\n]{1,8000}") @staticmethod def match(data: bytes | bytearray) -> bool: """Check if data MAY be in CSV format""" end_pos = data.find(b'\n', 0, MAX_LINE_LENGTH) if 0 > end_pos: # classic Mac OS format end_pos = data.find(b'\r', 0, MAX_LINE_LENGTH) if 0 <= end_pos: if CsvScanner.CSV_PATTERN.match(data, pos=0, endpos=end_pos): return True return False @classmethod def get_structure(cls, text: str) -> List[Dict[str, Any]]: """Reads a text as CSV standard with guessed dialect""" # windows style \r\n first_line_end = text.find('\r', 0, MAX_LINE_LENGTH) line_terminator = "\r\n" if 0 > first_line_end: # unix style \n first_line_end = text.find('\n', 0, MAX_LINE_LENGTH) line_terminator = "\n" if 0 > first_line_end: raise ValueError(f"No suitable line end found in {MAX_LINE_LENGTH} symbols") first_line = text[:first_line_end] dialect = cls.sniffer.sniff(first_line, delimiters=cls.DELIMITERS) rows = [] reader = csv.DictReader(io.StringIO(text), delimiter=dialect.delimiter, lineterminator=line_terminator, strict=True) # check the constant columns number for all rows fields_number = sum(1 for x in reader.fieldnames if x is not None) for row in reader: if not isinstance(row, dict): raise ValueError(f"ERROR: wrong row '{row}'") if len(row) != fields_number or any(x is None for x in row.values()): # None means no separator used raise ValueError(f"Different columns number in row '{row}' - mismatch {fields_number}") rows.append(row) return rows def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan each row as structure with column name in key""" try: if rows := self.get_structure(data_provider.text): struct_content_provider = StructContentProvider(struct=rows, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|CSV") new_limit = recursive_limit_size - sum(len(x) for x in rows) struct_candidates = self.structure_scan(struct_content_provider, depth, new_limit) return struct_candidates except Exception as csv_exc: logger.debug("%s:%s", data_provider.file_path, csv_exc) return None ================================================ FILE: credsweeper/deep_scanner/deb_scanner.py ================================================ import logging import struct from abc import ABC from typing import List, Optional, Generator, Tuple from credsweeper.common.constants import MIN_DATA_LEN, UTF_8 from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class DebScanner(AbstractScanner, ABC): """Implements deb (ar) scanning""" __header_size = 60 @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/Deb_(file_format)""" if data.startswith(b"!\n"): return True return False @staticmethod def walk_deb(data: bytes) -> Generator[Tuple[int, str, bytes], None, None]: """Processes sequence of DEB archive and yields offset, name and data""" offset = 8 # b"!\n" data_limit = len(data) - DebScanner.__header_size while offset <= data_limit: _data = data[offset:offset + DebScanner.__header_size] offset += DebScanner.__header_size # basic header structure _name, _, _size, __ = struct.unpack('16s32s10s2s', _data) file_size = int(_size) if MIN_DATA_LEN < file_size <= len(data) - offset: _data = data[offset:offset + file_size] yield offset, _name.decode(encoding=UTF_8).strip().rstrip('/'), _data offset += file_size if 0 == 1 & file_size else file_size + 1 def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts data file from .ar (debian) archive and launches data_scan""" try: candidates: List[Candidate] = [] for offset, name, data in DebScanner.walk_deb(data_provider.data): deb_content_provider = DataContentProvider(data=data, file_path=f"{data_provider.file_path}", file_type=Util.get_extension(name), info=f"{data_provider.info}|DEB:0x{offset:x}:{name}") new_limit = recursive_limit_size - len(data) deb_candidates = self.recursive_scan(deb_content_provider, depth, new_limit) candidates.extend(deb_candidates) return candidates except Exception as exc: logger.warning(exc) return None ================================================ FILE: credsweeper/deep_scanner/deep_scanner.py ================================================ import logging import re from typing import List, Any, Tuple, Union, Dict from credsweeper.common.constants import MIN_DATA_LEN from credsweeper.config.config import Config from credsweeper.deep_scanner.byte_scanner import ByteScanner from credsweeper.deep_scanner.bzip2_scanner import Bzip2Scanner from credsweeper.deep_scanner.crx_scanner import CrxScanner from credsweeper.deep_scanner.csv_scanner import CsvScanner from credsweeper.deep_scanner.deb_scanner import DebScanner from credsweeper.deep_scanner.docx_scanner import DocxScanner from credsweeper.deep_scanner.eml_scanner import EmlScanner from credsweeper.deep_scanner.encoder_scanner import EncoderScanner from credsweeper.deep_scanner.gzip_scanner import GzipScanner from credsweeper.deep_scanner.html_scanner import HtmlScanner from credsweeper.deep_scanner.jclass_scanner import JclassScanner from credsweeper.deep_scanner.jks_scanner import JksScanner from credsweeper.deep_scanner.lang_scanner import LangScanner from credsweeper.deep_scanner.lzma_scanner import LzmaScanner from credsweeper.deep_scanner.mxfile_scanner import MxfileScanner from credsweeper.deep_scanner.patch_scanner import PatchScanner from credsweeper.deep_scanner.pdf_scanner import PdfScanner from credsweeper.deep_scanner.pkcs_scanner import PkcsScanner from credsweeper.deep_scanner.png_scanner import PngScanner from credsweeper.deep_scanner.pptx_scanner import PptxScanner from credsweeper.deep_scanner.rpm_scanner import RpmScanner from credsweeper.deep_scanner.rtf_scanner import RtfScanner from credsweeper.deep_scanner.sqlite3_scanner import Sqlite3Scanner from credsweeper.deep_scanner.strings_scanner import StringsScanner from credsweeper.deep_scanner.tar_scanner import TarScanner from credsweeper.deep_scanner.tmx_scanner import TmxScanner from credsweeper.deep_scanner.xlsx_scanner import XlsxScanner from credsweeper.deep_scanner.xml_scanner import XmlScanner from credsweeper.deep_scanner.zip_scanner import ZipScanner from credsweeper.deep_scanner.zlib_scanner import ZlibScanner from credsweeper.file_handler.descriptor import Descriptor from credsweeper.scanner.scanner import Scanner from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class DeepScanner( ByteScanner, # Bzip2Scanner, # CrxScanner, # CsvScanner, # DocxScanner, # EncoderScanner, # GzipScanner, # HtmlScanner, # JclassScanner, # JksScanner, # LangScanner, # LzmaScanner, # MxfileScanner, # EmlScanner, # PatchScanner, # PdfScanner, # PkcsScanner, # PngScanner, # PptxScanner, # RtfScanner, # RpmScanner, # Sqlite3Scanner, # StringsScanner, # TarScanner, # DebScanner, # XmlScanner, # XlsxScanner, # ZipScanner, # ZlibScanner, # ): # yapf: disable """Advanced scanner with recursive exploring of data""" def __init__(self, config: Config, scanner: Scanner) -> None: """Initialize Advanced credential scanner. Args: scanner: CredSweeper scanner object config: dictionary variable, stores analyzer features """ self.__config = config self.__scanner = scanner @property def config(self) -> Config: return self.__config @property def scanner(self) -> Scanner: return self.__scanner # manually crafted dict to detect a media format with first byte, prefix and optionally pattern MEDIA_PATTERNS: Dict[int, List[Tuple[bytes, re.Pattern]]] = { 0x00: [ # JPEG2000 (b"\x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A", None), # ICO (b"\x00\x00\x01\x00", None), # TTF (b"\x00\x01\x00\x00\x00", None), # 3gp (b"\x00\x00\x00", re.compile(b"\x00\x00\x00.ftyp3g")), # GITCRYPT is not a media but added to use pedantic scan for strings and reduce extra warnings (b"\x00GITCRYPT\x00", None), ], 0x1A: [ # Matroska (b"\x1A\x45\xDF\xA3", None), ], 0x7F: [ # ELF signature - to quick pass for strings scanner (b"\x7FELF", re.compile(b"\x7FELF[\x01\x02][\x01\x02]\x01[\x00-\x12]")) ], 0x89: [ # PNG - can store text chunks inside (b"\x89PNG\x0D\x0A\x1A\x0A", None), ], 0xFF: [ # JPEG or MPEG-1 Layer 3 (b"\xFF", re.compile(b"\xFF(\xD8\xFF[\xDB\xEE\xE1\xE0\x51]|[\xFB\xF3\xF2])")), ], ord('8'): [ # PSD (b"8BPS\x00\x01\x00\x00\x00\x00\x00\x00", None), # PSB (b"8BPS\x00\x02\x00\x00\x00\x00\x00\x00", None), ], ord('B'): [ # BMP (b"BM", re.compile(b"BM.{2}\x00{4}")), ], ord('G'): [ # GIF (b"GIF8", re.compile(b"GIF8[79]a[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]") ), ], ord('I'): [ # TIFF little endian (b"II", re.compile(b"II[+*]\x00[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), # ID2v3 for various media (e.g. MP3) (b"ID3\x03\x00\x00\x00", None), ], ord('M'): [ # TIFF big endian (b"MM", re.compile(b"MM\x00[+*][^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), ], ord('O'): [ # OGG (b"OggS", re.compile(b"OggS[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), # OpenType font file (b"OTTO\x00", re.compile(b"OTTO\x00[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), ], ord('R'): [ # RIFF va (b"RIF", re.compile(b"RIF[FX].{4}[ 0-9A-Za-z]{4}" b"[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), ], ord('X'): [ # Macromedia (b"XFIR", re.compile(b"XFIR.{4}[ 0-9A-Za-z]{4}" b"[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), ], ord('f'): [ # mp4 (b"ftyp", re.compile(b"ftyp(isom|MSNV)[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), ], ord('g'): [ # gimp (b"gimp xcf", re.compile(b"gimp xcf (file|v001|v002)\x00" b"[^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), ], ord('w'): [ # WOFF 1.0, 2.0 (b"wOF", re.compile(b"wOF[2F][^\x00-\x08\x0C\x0E\x1F\x80-\xFF]{0,4096}[\x00-\x08\x0C\x0E\x1F\x80-\xFF]")), ], } @staticmethod def is_media(data: Union[bytes, bytearray]) -> bool: """Returns True if well-known media format found""" if patterns := DeepScanner.MEDIA_PATTERNS.get(data[0]): for prefix, pattern in patterns: # use prefix for speed-up total search if prefix and data.startswith(prefix) and (pattern is None or pattern.match(data)): return True return False @staticmethod def get_deep_scanners(data: bytes, descriptor: Descriptor, depth: int) -> Tuple[List[Any], List[Any]]: """Returns possibly scan methods for the data depends on content and fallback scanners""" deep_scanners: List[Any] = [] fallback_scanners: List[Any] = [] if not data or not isinstance(data, (bytes, bytearray)) or len(data) < MIN_DATA_LEN: # Guard clause: reject empty or invalid input data early pass elif ZipScanner.match(data): if 0 < depth: deep_scanners.append(ZipScanner) # probably, there might be a docx, xlsx and so on. # It might be scanned with text representation in third-party libraries. if descriptor.extension in (".xlsx", ".ods"): deep_scanners.append(XlsxScanner) else: fallback_scanners.append(XlsxScanner) if ".docx" == descriptor.extension: deep_scanners.append(DocxScanner) else: fallback_scanners.append(DocxScanner) if ".pptx" == descriptor.extension: deep_scanners.append(PptxScanner) else: fallback_scanners.append(PptxScanner) elif XlsxScanner.match(data): if ".xls" == descriptor.extension: deep_scanners.append(XlsxScanner) else: fallback_scanners.append(XlsxScanner) elif Bzip2Scanner.match(data): if 0 < depth: deep_scanners.append(Bzip2Scanner) elif LzmaScanner.match(data): if 0 < depth: deep_scanners.append(LzmaScanner) elif TarScanner.match(data): if 0 < depth: deep_scanners.append(TarScanner) elif DebScanner.match(data): if 0 < depth: deep_scanners.append(DebScanner) elif GzipScanner.match(data): if 0 < depth: deep_scanners.append(GzipScanner) elif PdfScanner.match(data): deep_scanners.append(PdfScanner) elif PngScanner.match(data): deep_scanners.append(PngScanner) elif RpmScanner.match(data): if 0 < depth: deep_scanners.append(RpmScanner) elif JclassScanner.match(data): deep_scanners.append(JclassScanner) elif JksScanner.match(data): deep_scanners.append(JksScanner) elif Sqlite3Scanner.match(data): if 0 < depth: deep_scanners.append(Sqlite3Scanner) elif PkcsScanner.match(data): deep_scanners.append(PkcsScanner) elif CrxScanner.match(data): if 0 < depth: deep_scanners.append(CrxScanner) elif RtfScanner.match(data): deep_scanners.append(RtfScanner) fallback_scanners.append(ByteScanner) elif XmlScanner.match(data): if HtmlScanner.match(data): deep_scanners.append(HtmlScanner) deep_scanners.append(XmlScanner) fallback_scanners.append(ByteScanner) elif MxfileScanner.match(data): deep_scanners.append(MxfileScanner) deep_scanners.append(XmlScanner) fallback_scanners.append(ByteScanner) elif TmxScanner.match(data): deep_scanners.append(TmxScanner) fallback_scanners.append(XmlScanner) fallback_scanners.append(ByteScanner) else: deep_scanners.append(XmlScanner) fallback_scanners.append(ByteScanner) elif EmlScanner.match(data): if descriptor.extension in (".eml", ".mht"): deep_scanners.append(EmlScanner) else: if 0 < depth: # a formal patch looks like an eml deep_scanners.append(PatchScanner) fallback_scanners.append(EmlScanner) fallback_scanners.append(ByteScanner) elif DeepScanner.is_media(data): # only StringsScanner may be applied for the formats effective if 0 < depth: fallback_scanners.append(StringsScanner) elif not Util.is_binary(data): # keep ByteScanner first to apply real value position if possible deep_scanners.append(ByteScanner) if 0 < depth: deep_scanners.append(PatchScanner) deep_scanners.append(LangScanner) if CsvScanner.match(data): deep_scanners.append(CsvScanner) if EncoderScanner.match(data): deep_scanners.append(EncoderScanner) if ZlibScanner.match(data): deep_scanners.append(ZlibScanner) else: if 0 < depth: if ZlibScanner.match(data): deep_scanners.append(ZlibScanner) fallback_scanners.append(StringsScanner) else: deep_scanners.append(StringsScanner) if not descriptor.info.endswith("|BASE64"): logger.warning("Cannot apply a deep scanner for type %s prefix %s %d", descriptor, repr(data[:32]), len(data)) return deep_scanners, fallback_scanners ================================================ FILE: credsweeper/deep_scanner/docx_scanner.py ================================================ import io import logging from abc import ABC from typing import List, Optional import docx from docx.document import Document from docx.oxml import CT_P, CT_Tbl, CT_SectPr, CT_TcPr from docx.section import Section, _Header, _Footer from docx.table import _Cell, Table from docx.text.paragraph import Paragraph from lxml.etree import _Element from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class DocxScanner(AbstractScanner, ABC): """Implements docx scanning""" @staticmethod def _iter_block_items(block): if isinstance(block, Paragraph): yield block return if isinstance(block, (_Header, _Footer)): for table in block.tables: for row in table.rows: for cell in row.cells: yield from DocxScanner._iter_block_items(cell) yield from block.paragraphs return if isinstance(block, Section): yield from DocxScanner._iter_block_items(block.header) yield from DocxScanner._iter_block_items(block.footer) return if isinstance(block, Document): parent_elm = block.element.body elif isinstance(block, _Cell): parent_elm = block._tc # pylint: disable=W0212 else: raise ValueError(f"unrecognised:{type(block)}") for child in parent_elm.iterchildren(): if isinstance(child, CT_P): yield Paragraph(child, block) elif isinstance(child, CT_Tbl): table = Table(child, block) for row in table.rows: for cell in row.cells: yield from DocxScanner._iter_block_items(cell) elif isinstance(child, (CT_TcPr, CT_SectPr)): # config pass elif isinstance(child, _Element): yield child else: logger.warning("Unknown:%s", type(child)) def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan DOCX text with splitting by lines""" try: docx_lines: List[str] = [] doc = docx.Document(io.BytesIO(data_provider.data)) for block in self._iter_block_items(doc): if block.text: docx_lines.append(block.text) header_lines_set = set() footer_lines_set = set() for section in doc.sections: for header in [section.first_page_header, section.even_page_header, section.header]: for block in self._iter_block_items(header): if block.text: header_lines_set.add(block.text) for footer in [section.first_page_footer, section.even_page_footer, section.footer]: for block in self._iter_block_items(footer): if block.text: footer_lines_set.add(block.text) docx_lines.extend(sorted(list(header_lines_set))) docx_lines.extend(sorted(list(footer_lines_set))) string_data_provider = StringContentProvider(lines=docx_lines, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|DOCX") docx_candidates = self.scanner.scan(string_data_provider) return docx_candidates except Exception as docx_exc: logger.warning("%s:%s", data_provider.file_path, docx_exc) return None ================================================ FILE: credsweeper/deep_scanner/eml_scanner.py ================================================ import email import logging from abc import ABC from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.byte_content_provider import ByteContentProvider from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class EmlScanner(AbstractScanner, ABC): """Implements eml scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According to https://datatracker.ietf.org/doc/html/rfc822 lookup the fields: Date, From, To or Subject""" if (b"\nDate:" in data or data.startswith(b"Date:")) \ and (b"\nFrom:" in data or data.startswith(b"From:")) \ and (b"\nTo:" in data or data.startswith(b"To:")) \ and (b"\nSubject:" in data or data.startswith(b"Subject:")): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan EML with text representation""" try: candidates: List[Candidate] = [] msg = email.message_from_bytes(data_provider.data) for part in msg.walk(): content_type = part.get_content_type() body = part.get_payload(decode=True) if not isinstance(body, (bytes, str)): continue if "text/plain" == content_type: eml_text_data_provider = ByteContentProvider( content=(body if isinstance(body, bytes) else body.encode()), file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|EML-TEXT") eml_candidates = self.scanner.scan(eml_text_data_provider) candidates.extend(eml_candidates) else: x_data_provider = DataContentProvider(data=(body if isinstance(body, bytes) else body.encode()), file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|EML-DATA") new_limit = recursive_limit_size - len(body) if "text/html" == content_type and x_data_provider.represent_as_html( depth, new_limit, self.scanner.keywords_required_substrings_check): string_data_provider = StringContentProvider(lines=x_data_provider.lines, line_numbers=x_data_provider.line_numbers, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|EML-HTML") html_candidates = self.scanner.scan(string_data_provider) candidates.extend(html_candidates) elif content_type.startswith("application"): x_candidates = self.recursive_scan(x_data_provider, depth, new_limit) candidates.extend(x_candidates) else: logger.warning("%s:%s:%s cannot be supported", data_provider.file_path, content_type, type(body)) return candidates except Exception as eml_exc: logger.warning("%s:%s", data_provider.file_path, eml_exc) return None ================================================ FILE: credsweeper/deep_scanner/encoder_scanner.py ================================================ import contextlib import logging import re from abc import ABC from typing import List, Optional from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) # 8 bytes are encoded to 12 symbols 12345678 -> MTIzNDU2Nzg= MIN_ENCODED_DATA_LEN = 12 class EncoderScanner(AbstractScanner, ABC): """Implements recursive iteration when data might be encoded from base64""" BASE64_PATTERN = re.compile( rb"(\xFF\xFE|\xFE\xFF)?(" rb"(?:(?P[A-Z])|(?P[a-z])|(?P[0-9/+])|[\s\x00\\])+(?(a)(?(b)(?(c)(=+|$)|(?!x)x)|(?!x)x)|(?!x)x)|" rb"(?:(?P[A-Z])|(?P[a-z])|(?P[0-9_-])|[\s\x00\\])+(?(e)(?(f)(?(g)(=+|$)|(?!x)x)|(?!x)x)|(?!x)x))") @staticmethod def match(data: bytes | bytearray) -> bool: """Check if data MAY be base64 encoded with whitespaces (escaping too)""" if len(data) >= MIN_ENCODED_DATA_LEN \ and EncoderScanner.BASE64_PATTERN.match(data, pos=0, endpos=MAX_LINE_LENGTH): return True return False @staticmethod def decode(text: str) -> Optional[bytes]: """Decodes base64 text with cleaning whitespaces. Returns None when the decoding fails""" with contextlib.suppress(Exception): return Util.decode_base64(text=Util.PEM_CLEANING_PATTERN.sub(r'', text).replace('\\', ''), padding_safe=True, urlsafe_detect=True) return None def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to decode data from base64 encode to bytes and scan as bytes again""" if decoded := EncoderScanner.decode(data_provider.text): decoded_data_provider = DataContentProvider(data=decoded, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|BASE64") new_limit = recursive_limit_size - len(decoded_data_provider.data) return self.recursive_scan(decoded_data_provider, depth, new_limit) return None ================================================ FILE: credsweeper/deep_scanner/gzip_scanner.py ================================================ import gzip import io import logging from abc import ABC from pathlib import Path from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class GzipScanner(AbstractScanner, ABC): """Realises gzip scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://www.rfc-editor.org/rfc/rfc1952""" if data.startswith(b"\x1F\x8B\x08"): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts data from gzip archive and launches data_scan""" try: with gzip.open(io.BytesIO(data_provider.data)) as f: file_path = Path(data_provider.file_path) new_path = file_path.as_posix() if ".gz" == file_path.suffix: new_path = new_path[:-3] gzip_content_provider = DataContentProvider(data=f.read(), file_path=new_path, file_type=Util.get_extension(new_path), info=f"{data_provider.info}|GZIP:{new_path}") new_limit = recursive_limit_size - len(gzip_content_provider.data) gzip_candidates = self.recursive_scan(gzip_content_provider, depth, new_limit) return gzip_candidates except Exception as gzip_exc: logger.warning("%s:%s", data_provider.file_path, gzip_exc) return None ================================================ FILE: credsweeper/deep_scanner/html_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class HtmlScanner(AbstractScanner, ABC): """Implements html scanning if possible""" @staticmethod def match(data: bytes | bytearray) -> bool: """Used to detect html format. Suppose, invocation of is_xml() was True before.""" for opening_tag, closing_tag in [(b""), (b""), (b""), (b"

", b"

"), (b"", b""), (b"
", b"
"), (b"
  • ", b"
  • "), (b"
      ", b"
    "), (b"
      ", b"
    "), (b"", b""), (b"", b""), (b"", b"")]: opening_pos = data.find(opening_tag, 0, MAX_LINE_LENGTH) if 0 <= opening_pos < data.find(closing_tag, opening_pos): # opening and closing tags were found - suppose it is an HTML return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to represent data as html text and scan as text lines""" if result := data_provider.represent_as_html(depth, recursive_limit_size, self.scanner.keywords_required_substrings_check): string_data_provider = StringContentProvider(lines=data_provider.lines, line_numbers=data_provider.line_numbers, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|HTML") return self.scanner.scan(string_data_provider) return None if result is None else [] ================================================ FILE: credsweeper/deep_scanner/jclass_scanner.py ================================================ import io import logging import struct from abc import ABC from typing import List, Optional from credsweeper.common.constants import UTF_8 from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.struct_content_provider import StructContentProvider logger = logging.getLogger(__name__) class JclassScanner(AbstractScanner, ABC): """Implements java .class scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures - java class""" if data.startswith(b"\xCA\xFE\xBA\xBE"): return True return False @staticmethod def u2(stream: io.BytesIO) -> int: """Extracts unsigned 16 bit big-endian""" return int(struct.unpack(">H", stream.read(2))[0]) @staticmethod def get_utf8_constants(stream: io.BytesIO) -> List[str]: """Extracts only Utf8 constants from java ClassFile""" result = [] # actual number of items is one less! items_counter = JclassScanner.u2(stream) - 1 while 0 < items_counter: items_counter -= 1 # uint8 tag = int(stream.read(1)[0]) if 1 == tag: # UTF-8 string in bytes may be bigger than in characters length = JclassScanner.u2(stream) data = stream.read(int(length)) value = data.decode(encoding=UTF_8, errors="replace") result.append(value) elif tag in (3, 4, 9, 10, 11, 12, 18): _ = stream.read(4) elif tag in (7, 8, 16): _ = stream.read(2) elif tag in (5, 6): _ = stream.read(8) # long and double types use two indexes items_counter -= 1 elif 15 == tag: _ = stream.read(3) else: logger.warning("Unknown tag %s", tag) break return result def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts data from binary""" try: stream = io.BytesIO(data_provider.data) stream.read(4) # magic minor = JclassScanner.u2(stream) major = JclassScanner.u2(stream) constants = JclassScanner.get_utf8_constants(stream) struct_content_provider = StructContentProvider(struct=constants, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|Java.{major}.{minor}") new_limit = recursive_limit_size - sum(len(x) for x in constants) candidates = self.structure_scan(struct_content_provider, depth, new_limit) return candidates except Exception as jclass_exc: logger.warning("%s:%s", data_provider.file_path, jclass_exc) return None ================================================ FILE: credsweeper/deep_scanner/jks_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional import jks from credsweeper.common.constants import Severity, Confidence from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider logger = logging.getLogger(__name__) class JksScanner(AbstractScanner, ABC): """Implements jks scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures - jks""" if data.startswith(b"\xFE\xED\xFE\xED"): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan JKS to open with standard password""" for pw_probe in self.config.bruteforce_list: value = repr(pw_probe) try: keystore = jks.KeyStore.loads(data_provider.data, pw_probe, try_decrypt_keys=True) # the password probe has passed, it will be the value if keystore.private_keys or keystore.secret_keys: severity = Severity.HIGH confidence = Confidence.STRONG info = f"{data_provider.info}|JKS:default password" rule_name = f"JKS private key with password {value}" else: severity = Severity.LOW confidence = Confidence.WEAK info = f"{data_provider.info}|JKS:sensitive data" rule_name = f"JKS sensitive data with password {value}" candidate = Candidate.get_dummy_candidate( self.config, # data_provider.file_path, # data_provider.file_type, # info, # rule_name) candidate.severity = severity candidate.confidence = confidence candidate.line_data_list[0].line = candidate.line_data_list[0].value = value candidate.line_data_list[0].value_start = 0 candidate.line_data_list[0].value_end = len(value) return [candidate] except Exception as jks_exc: logger.debug("%s:%s:%s", data_provider.file_path, pw_probe, jks_exc) return None ================================================ FILE: credsweeper/deep_scanner/lang_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.struct_content_provider import StructContentProvider logger = logging.getLogger(__name__) class LangScanner(AbstractScanner, ABC): """Implements scanning of data if it is a script of some markup language""" def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to represent data as markup language and scan as structure""" if result := data_provider.represent_as_structure(): struct_data_provider = StructContentProvider(struct=data_provider.structure, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|STRUCT") return self.structure_scan(struct_data_provider, depth, recursive_limit_size) return None if result is None else [] ================================================ FILE: credsweeper/deep_scanner/lzma_scanner.py ================================================ import logging import lzma from abc import ABC from pathlib import Path from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class LzmaScanner(AbstractScanner, ABC): """Implements lzma scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures - lzma also xz""" if data.startswith((b"\xFD7zXZ\x00", b"\x5D\x00\x00")): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts data from lzma archive and launches data_scan""" try: file_path = Path(data_provider.file_path) new_path = file_path.as_posix() if ".xz" == file_path.suffix: new_path = new_path[:-3] elif ".lzma" == file_path.suffix: new_path = new_path[:-5] lzma_content_provider = DataContentProvider(data=lzma.decompress(data_provider.data), file_path=new_path, file_type=Util.get_extension(new_path), info=f"{data_provider.info}|LZMA:{file_path}") new_limit = recursive_limit_size - len(lzma_content_provider.data) lzma_candidates = self.recursive_scan(lzma_content_provider, depth, new_limit) return lzma_candidates except Exception as lzma_exc: logger.warning("%s:%s", data_provider.file_path, lzma_exc) return None ================================================ FILE: credsweeper/deep_scanner/mxfile_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional from bs4 import BeautifulSoup from lxml import etree from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class MxfileScanner(AbstractScanner, ABC): """Scanner for drawio diagram""" @staticmethod def match(data: bytes | bytearray) -> bool: """Used to detect mxfile (drawio) format. Suppose, invocation of is_xml() was True before.""" mxfile_tag_pos = data.find(b"", mxfile_tag_pos): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to get text data from the xml format""" try: lines = [] line_numbers = [] tree = etree.fromstring(data_provider.text) for element in tree.iter(): if "mxCell" == getattr(element, "tag"): line_number = element.sourceline attr = getattr(element, "attrib") if attr is None or not (value := attr.get("value")): continue if html := BeautifulSoup(value, features="html.parser"): _, value_lines, __ = data_provider.simple_html_representation(html) for line in value_lines: lines.append(line) line_numbers.append(line_number) mxfile_data_provider = StringContentProvider(lines=lines, line_numbers=line_numbers, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|MXFILE") return self.scanner.scan(mxfile_data_provider) except Exception as exc: logger.warning(exc) return None ================================================ FILE: credsweeper/deep_scanner/patch_scanner.py ================================================ import io import logging from abc import ABC from typing import List, Optional from credsweeper.common.constants import DiffRowType from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.patches_provider import PatchesProvider logger = logging.getLogger(__name__) class PatchScanner(AbstractScanner, ABC): """Implements .patch scanning""" def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan EML with text representation""" try: candidates: List[Candidate] = [] # common limitation new_limit_size = recursive_limit_size - len(data_provider.data) # ADDED path_added = [(data_provider.file_path, io.BytesIO(data_provider.data))] added_content_provider = PatchesProvider(path_added, change_type=DiffRowType.ADDED) for added_file in added_content_provider.get_scannable_files(self.config): added_candidates = self.scan(added_file, depth, new_limit_size) candidates.extend(added_candidates) # DELETED path_deleted = [(data_provider.file_path, io.BytesIO(data_provider.data))] deleted_content_provider = PatchesProvider(path_deleted, change_type=DiffRowType.DELETED) for deleted_file in deleted_content_provider.get_scannable_files(self.config): added_candidates = self.scan(deleted_file, depth, new_limit_size) candidates.extend(added_candidates) # update the line data for deep scan only for i in candidates: for line_data in i.line_data_list: line_data.path = data_provider.file_path line_data.info = f"{data_provider.info}|PATCH:{line_data.info}" return candidates except Exception as patch_exc: logger.warning("%s:%s", data_provider.file_path, patch_exc) return None ================================================ FILE: credsweeper/deep_scanner/pdf_scanner.py ================================================ import io import logging from abc import ABC from typing import List, Optional from pdfminer.high_level import extract_pages from pdfminer.layout import LAParams, LTText, LTItem from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider, MIN_DATA_LEN from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class PdfScanner(AbstractScanner, ABC): """Implements pdf scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures - pdf""" if data.startswith(b"%PDF-"): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan PDF elements recursively and the whole text on page as strings""" # PyPDF2 - https://github.com/py-pdf/pypdf/issues/1328 text in table is merged without spaces # pdfminer.six - splits text in table to many lines. Allows to walk through elements try: candidates = [] for page in extract_pages(io.BytesIO(data_provider.data), laparams=LAParams()): for element in page: if isinstance(element, LTText): element_text = element.get_text().strip() if 0 < depth and element_text: if MIN_DATA_LEN < len(element_text): pdf_content_provider = DataContentProvider( data=element_text.encode(), file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|PDF:{page.pageid}") new_limit = recursive_limit_size - len(pdf_content_provider.data) element_candidates = self.recursive_scan(pdf_content_provider, depth, new_limit) candidates.extend(element_candidates) else: string_data_provider = StringContentProvider(lines=[element_text], file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|PDF:{page.pageid}") pdf_candidates = self.scanner.scan(string_data_provider) candidates.extend(pdf_candidates) elif isinstance(element, LTItem): pass else: logger.warning("Unsupported %s", element) return candidates except Exception as pdf_exc: logger.warning("%s:%s", data_provider.file_path, pdf_exc) return None ================================================ FILE: credsweeper/deep_scanner/pkcs_scanner.py ================================================ import base64 import logging from abc import ABC from typing import List, Optional, Union from credsweeper.common.constants import Severity, Confidence from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class PkcsScanner(AbstractScanner, ABC): """Implements pkcs12 scanning""" @staticmethod def match(data: Union[bytes, bytearray]) -> int: """Matched ASN1 structure""" return bool(Util.get_asn1_size(data)) def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan PKCS12 to open with standard password""" for pw_probe in self.config.bruteforce_list: try: password = pw_probe.encode() if pw_probe else None if pkey := Util.load_pk(data_provider.data, password): if not Util.check_pk(pkey): logger.debug("False alarm %s", data_provider.info) return [] candidate = Candidate.get_dummy_candidate( self.config, # data_provider.file_path, # data_provider.file_type, # info=f"{data_provider.info}|PKCS_PASSWORD:{repr(password)}", # rule_name=f"PKCS with password {repr(pw_probe)}" if pw_probe else "PKCS without password") candidate.line_data_list[0].line = base64.b64encode(data_provider.data).decode() candidate.line_data_list[0].value = repr(password) # high severity is assigned to private key rules candidate.severity = Severity.HIGH candidate.confidence = Confidence.STRONG return [candidate] except Exception as pkcs_exc: logger.debug("%s:%s:%s", data_provider.file_path, pw_probe, pkcs_exc) return None ================================================ FILE: credsweeper/deep_scanner/png_scanner.py ================================================ import logging import struct from abc import ABC from typing import List, Optional, Generator, Tuple from credsweeper.common.constants import LATIN_1, UTF_8 from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider logger = logging.getLogger(__name__) class PngScanner(AbstractScanner, ABC): """Implements PNG scanning for text chunks""" @staticmethod def match(data: bytes | bytearray) -> bool: """Returns True if prefix match""" if data.startswith(b"\x89PNG\r\n\x1a\n"): return True return False @staticmethod def yield_png_chunks(data: bytes) -> Generator[Tuple[int, str, bytes], None, None]: """Processes PNG chunks and yields offset, type and data""" offset = 8 # b"\x89PNG\r\n\x1a\n" data_limit = len(data) - 12 while offset <= data_limit: chunk_size = struct.unpack(">I", data[offset:offset + 4])[0] chunk_type = data[offset + 4:offset + 8] offset += 8 if len(data) < offset + chunk_size: raise ValueError(f"PNG chunk size {chunk_size} exceeds data limit 0x{offset:x}") match chunk_type: case b"IEND": # https://www.w3.org/TR/png/#11IEND break case b"tEXt": # https://www.w3.org/TR/png/#11tEXt keyword, text_data = data[offset:offset + chunk_size].split(b'\0', 1) yield offset, f"PNG_TEXT:{keyword.decode(encoding=LATIN_1, errors='strict')}", text_data case b"zTXt": # https://www.w3.org/TR/png/#11zTXt keyword, ztxt_data = data[offset:offset + chunk_size].split(b'\0', 1) if not ztxt_data.startswith(b'\0'): raise ValueError(f"Unsupported compression method {ztxt_data[0]}") yield offset, f"PNG_ZTXT:{keyword.decode(encoding=LATIN_1, errors='strict')}", ztxt_data[1:] case b"iTXt": # https://www.w3.org/TR/png/#11iTXt keyword, itxt_data = data[offset:offset + chunk_size].split(b'\0', 1) if itxt_data.startswith(b"\x00\x00"): compression = False elif itxt_data.startswith(b"\x01\x00"): compression = True else: raise ValueError(f"Unsupported compression {repr(itxt_data[:2])}") lang_tag, itxt_data = itxt_data[2:].split(b'\0', 1) trans_key, itxt_data = itxt_data.split(b'\0', 1) yield (offset, f"PNG_ITXT_{'1' if compression else '0'}" f":{keyword.decode(encoding=UTF_8)}" f":{lang_tag.decode(encoding=UTF_8)}" f":{trans_key.decode(encoding=UTF_8)}", itxt_data) case _: pass # skip crc verification offset += chunk_size + 4 def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan each row as structure with column name in key""" try: candidates: List[Candidate] = [] for offset, chunk_type, data in PngScanner.yield_png_chunks(data_provider.data): png_content_provider = DataContentProvider(data=data, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|{chunk_type}:0x{offset:x}") new_limit = recursive_limit_size - len(data) png_candidates = self.recursive_scan(png_content_provider, depth, new_limit) candidates.extend(png_candidates) return candidates except Exception as exc: logger.warning(exc) return None ================================================ FILE: credsweeper/deep_scanner/pptx_scanner.py ================================================ import io import logging from abc import ABC from typing import List, Optional from pptx import Presentation from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class PptxScanner(AbstractScanner, ABC): """Implements pptx scanning""" def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan pptx text elements for all slides""" try: candidates = [] pptx_lines = [] presentation = Presentation(io.BytesIO(data_provider.data)) for n, slide in enumerate(presentation.slides): for shape in slide.shapes: if shape.has_text_frame: for paragraph in shape.text_frame.paragraphs: pptx_lines.append(paragraph.text) string_data_provider = StringContentProvider(lines=pptx_lines, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|PPTX:{n+1}") pptx_candidates = self.scanner.scan(string_data_provider) candidates.extend(pptx_candidates) return candidates except Exception as pptx_exc: logger.warning("%s:%s", data_provider.file_path, pptx_exc) return None ================================================ FILE: credsweeper/deep_scanner/rpm_scanner.py ================================================ import io import logging from abc import ABC from typing import List, Optional import rpmfile from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class RpmScanner(AbstractScanner, ABC): """Implements rpm scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures""" if data.startswith(b"\xED\xAB\xEE\xDB"): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts files one by one from the package type and launches recursive scan""" try: candidates = [] with rpmfile.open(fileobj=io.BytesIO(data_provider.data)) as rpm_file: for member in rpm_file.getmembers(): # skip directory if 0 != member.isdir: continue if FilePathExtractor.check_exclude_file(self.config, member.name): continue if 0 > recursive_limit_size - member.size: logger.warning("%s: size %s is over limit %s depth:%s", member.filename, member.size, recursive_limit_size, depth) continue rpm_content_provider = DataContentProvider(data=rpm_file.extractfile(member).read(), file_path=data_provider.file_path, file_type=Util.get_extension(member.name), info=f"{data_provider.info}|RPM:{member.name}") new_limit = recursive_limit_size - len(rpm_content_provider.data) rpm_candidates = self.recursive_scan(rpm_content_provider, depth, new_limit) candidates.extend(rpm_candidates) return candidates except Exception as rpm_exc: logger.warning("%s:%s", data_provider.file_path, rpm_exc) return None ================================================ FILE: credsweeper/deep_scanner/rtf_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional from striprtf import striprtf from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class RtfScanner(AbstractScanner, ABC): """Implements squash file system scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures - Rich Text Format""" if data.startswith(b"{\\rtf1") and data.endswith(b"}"): return True return False @staticmethod def get_lines(text: str) -> List[str]: """Extracts text lines from RTF format""" rtf_text = striprtf.rtf_to_text(text) lines = Util.split_text(rtf_text) return lines def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Scans data as RTF""" try: string_data_provider = StringContentProvider(lines=RtfScanner.get_lines(data_provider.text), file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|RTF") rtf_candidates = self.scanner.scan(string_data_provider) return rtf_candidates except Exception as rtf_exc: logger.warning("%s:%s", data_provider.file_path, rtf_exc) return None ================================================ FILE: credsweeper/deep_scanner/sqlite3_scanner.py ================================================ import logging import os.path import sqlite3 import sys import tempfile from abc import ABC from typing import List, Optional, Tuple, Any, Generator from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.struct_content_provider import StructContentProvider logger = logging.getLogger(__name__) class Sqlite3Scanner(AbstractScanner, ABC): """Implements SQLite3 database scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures - SQLite Database""" if data.startswith(b"SQLite format 3\0"): return True return False @staticmethod def __walk(sqlite3db) -> Generator[Tuple[str, Any], None, None]: sqlite3db.row_factory = sqlite3.Row cursor = sqlite3db.cursor() cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';") for table in cursor.fetchall(): table_name = table[0] try: cursor.execute(f"SELECT * FROM {table_name}") for row in cursor: yield table_name, dict(row) except sqlite3.DatabaseError as exc: print(f"Error reading table {table_name}: {exc}") @staticmethod def walk_sqlite(data: bytes) -> Generator[Tuple[str, Any], None, None]: """Yields data from sqlite3 database""" if 10 < sys.version_info.minor: # Added in version 3.11 with sqlite3.connect(":memory:") as sqlite3db: sqlite3db.deserialize(data) # type: ignore yield from Sqlite3Scanner.__walk(sqlite3db) elif "nt" != os.name: # a tmpfile has to be used. TODO: remove when 3.10 will deprecate with tempfile.NamedTemporaryFile(suffix=".sqlite") as t: t.write(data) t.flush() with sqlite3.connect(t.name) as sqlite3db: yield from Sqlite3Scanner.__walk(sqlite3db) elif "nt" == os.name: # windows trick. TODO: remove when 3.10 will deprecate with tempfile.NamedTemporaryFile(delete=False, suffix=".sqlite") as t: t.write(data) t.flush() sqlite3db = sqlite3.connect(t.name) yield from Sqlite3Scanner.__walk(sqlite3db) sqlite3db.close() if os.path.exists(t.name): os.remove(t.name) def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts data file from .ar (debian) archive and launches data_scan""" try: candidates: List[Candidate] = [] new_limit = recursive_limit_size - len(data_provider.data) for table, row in self.walk_sqlite(data_provider.data): struct_content_provider = StructContentProvider(struct=row, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|SQLite3.{table}") if new_candidates := self.structure_scan(struct_content_provider, depth, new_limit): candidates.extend(new_candidates) return candidates except Exception as exc: logger.warning(exc) return None ================================================ FILE: credsweeper/deep_scanner/strings_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional, Tuple from credsweeper.common.constants import MIN_DATA_LEN from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class StringsScanner(AbstractScanner, ABC): """Implements known binary file scanning with ASCII strings representations""" @staticmethod def get_enumerated_lines(data: bytes) -> List[Tuple[int, str]]: """Processes binary to found ASCII strings. Use offset instead line number.""" enumerated_lines = [] offset = -1 line_items = [] for n, x in enumerate(data): if 0x09 == x or 0x20 <= x <= 0x7E: # TAB, SPACE and visible ASCII symbols if 0 > offset: # use start of string as line number offset = n line_items.append(chr(x)) continue if MIN_DATA_LEN <= len(line_items): # add valuable lines only enumerated_lines.append((offset, ''.join(line_items))) offset = -1 line_items.clear() if MIN_DATA_LEN <= len(line_items): enumerated_lines.append((offset, ''.join(line_items))) return enumerated_lines def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Scan binary files for ASCII strings""" if strings := StringsScanner.get_enumerated_lines(data_provider.data): string_data_provider = StringContentProvider(lines=[x[1] for x in strings], line_numbers=[x[0] for x in strings], file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|STRINGS") return self.scanner.scan(string_data_provider) return None if strings is None else [] ================================================ FILE: credsweeper/deep_scanner/tar_scanner.py ================================================ import contextlib import io import logging import tarfile from abc import ABC from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class TarScanner(AbstractScanner, ABC): """Implements tar scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures""" if 512 <= len(data) and 257 == data.find(b"\x75\x73\x74\x61\x72", 257, 262) \ and (262 == data.find(b"\x00\x30\x30", 262, 265) or 262 == data.find(b"\x20\x20\x00", 262, 265)): with contextlib.suppress(Exception): chksum = tarfile.nti(data[148:156]) # type: ignore unsigned_chksum, signed_chksum = tarfile.calc_chksums(data) # type: ignore if chksum == unsigned_chksum or chksum == signed_chksum: return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts files one by one from tar archive and launches data_scan""" try: candidates = [] with tarfile.TarFile(fileobj=io.BytesIO(data_provider.data)) as tf: for tfi in tf.getmembers(): # skip directory if not tfi.isreg(): continue if FilePathExtractor.check_exclude_file(self.config, tfi.name): continue if 0 > recursive_limit_size - tfi.size: logger.warning("%s: size %s is over limit %s depth:%s", tfi.name, tfi.size, recursive_limit_size, depth) continue with tf.extractfile(tfi) as f: tar_content_provider = DataContentProvider(data=f.read(), file_path=data_provider.file_path, file_type=Util.get_extension(tfi.name), info=f"{data_provider.info}|TAR:{tfi.name}") # Nevertheless, use extracted data size new_limit = recursive_limit_size - len(tar_content_provider.data) tar_candidates = self.recursive_scan(tar_content_provider, depth, new_limit) candidates.extend(tar_candidates) return candidates except Exception as tar_exc: # too many exception types might be produced with broken tar logger.warning("%s:%s", data_provider.file_path, tar_exc) return None ================================================ FILE: credsweeper/deep_scanner/tmx_scanner.py ================================================ import logging from abc import ABC from typing import List, Optional from lxml import etree from credsweeper.common.constants import MIN_DATA_LEN, MAX_LINE_LENGTH from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class TmxScanner(AbstractScanner, ABC): """Realises tmX files scanning for values only. Image tags are skipped.""" @staticmethod def match(data: bytes | bytearray) -> bool: """Used to detect tm7,tm6,etc. (ThreadModeling) format.""" for opening_tag, closing_tag in [(b""), (b"")]: opening_pos = data.find(opening_tag, 0, MAX_LINE_LENGTH) if 0 <= opening_pos < data.find(closing_tag, opening_pos): # opening and closing tags were found - suppose it is an HTML return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to represent data as xml text and scan as text lines""" try: lines = [] # the format is always in single line xlm, so line numbers are not actual tree = etree.fromstring(data_provider.data) for element in tree.iter(): tag = Util.extract_element_data(element, "tag") if "Image" in tag: continue text = Util.extract_element_data(element, "text") if MIN_DATA_LEN > len(text): continue lines.append(text) tmx_data_provider = StringContentProvider(lines=lines, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|TMX") return self.scanner.scan(tmx_data_provider) except Exception as exc: logger.warning("Cannot processed tmX file %s %s", str(data_provider.file_path), str(exc)) return None ================================================ FILE: credsweeper/deep_scanner/xlsx_scanner.py ================================================ import io import logging from abc import ABC from typing import List, Optional import pandas as pd from credsweeper.credentials.augment_candidates import augment_candidates from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class XlsxScanner(AbstractScanner, ABC): """Implements xlsx scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures""" if data.startswith(b"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1"): # Compound File Binary Format: doc, xls, ppt, msi, msg return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to scan xlsx text elements for all slides""" try: candidates = [] book = pd.read_excel(io.BytesIO(data_provider.data), sheet_name=None, header=None) for sheet_name, sheet_data in book.items(): sheet_info = f"{data_provider.info}|{sheet_name}" # replace open xml carriage returns _x000D_ before line feed only df = sheet_data.replace(to_replace="_x000D_\n", value='\n', regex=True).fillna('').astype(str) for row_pos, row in enumerate(df.values): for col_pos, cell in enumerate(row): cell_info = f"{sheet_info}:{Util.get_excel_column_name(col_pos)}{row_pos + 1}" cell_provider = StringContentProvider(lines=cell.splitlines(), file_path=data_provider.file_path, file_type=data_provider.file_type, info=cell_info) cell_candidates = self.scanner.scan(cell_provider) candidates.extend(cell_candidates) row_line = '\t'.join(row) row_provider = StringContentProvider(lines=[row_line], file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{sheet_info}:R{row_pos + 1}") row_candidates = self.scanner.scan(row_provider) augment_candidates(candidates, row_candidates) return candidates except Exception as xlsx_exc: logger.warning("%s:%s", data_provider.file_path, xlsx_exc) return None ================================================ FILE: credsweeper/deep_scanner/xml_scanner.py ================================================ import logging import re from abc import ABC from typing import List, Optional from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.string_content_provider import StringContentProvider logger = logging.getLogger(__name__) class XmlScanner(AbstractScanner, ABC): """Realises xml scanning""" # A well-formed XML must start from < or a whitespace character XML_FIRST_BRACKET_PATTERN = re.compile(rb"^\s*<") XML_OPENING_TAG_PATTERN = re.compile(rb"<([0-9A-Za-z_]{1,256})") @staticmethod def match(data: bytes | bytearray) -> bool: """Used to detect xml format from raw bytes""" if XmlScanner.XML_FIRST_BRACKET_PATTERN.search(data, 0, MAX_LINE_LENGTH): if first_bracket_match := XmlScanner.XML_OPENING_TAG_PATTERN.search(data, 0, MAX_LINE_LENGTH): start_pos = first_bracket_match.start() closing_tag = b"" if start_pos < data.find(closing_tag, start_pos): return True return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Tries to represent data as xml text and scan as text lines""" if result := data_provider.represent_as_xml(): string_data_provider = StringContentProvider(lines=data_provider.lines, line_numbers=data_provider.line_numbers, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|XML") return self.scanner.scan(string_data_provider) return None if result is None else [] ================================================ FILE: credsweeper/deep_scanner/zip_scanner.py ================================================ import io import logging from abc import ABC from typing import List, Optional from zipfile import ZipFile from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class ZipScanner(AbstractScanner, ABC): """Implements zip scanning""" @staticmethod def match(data: bytes | bytearray) -> bool: """According https://en.wikipedia.org/wiki/List_of_file_signatures""" if data.startswith(b"PK") and 4 <= len(data): if 0x03 == data[2] and 0x04 == data[3]: # normal PK return True if 0x05 == data[2] and 0x06 == data[3]: # empty archive - no sense to scan in other scanners, so let it be a zip return True if 0x07 == data[2] and 0x08 == data[3]: # spanned archive - NOT SUPPORTED return False return False def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Extracts files one by one from zip archives and launches data_scan""" try: candidates = [] with ZipFile(io.BytesIO(data_provider.data)) as zf: for zfl in zf.infolist(): # skip directory if zfl.is_dir(): continue if FilePathExtractor.check_exclude_file(self.config, zfl.filename): continue if 0 > recursive_limit_size - zfl.file_size: logger.warning("%s: size %s is over limit %s depth:%s", zfl.filename, zfl.file_size, recursive_limit_size, depth) continue with zf.open(zfl) as f: zip_content_provider = DataContentProvider(data=f.read(), file_path=data_provider.file_path, file_type=Util.get_extension(zfl.filename), info=f"{data_provider.info}|ZIP:{zfl.filename}") # nevertheless use extracted data size new_limit = recursive_limit_size - len(zip_content_provider.data) zip_candidates = self.recursive_scan(zip_content_provider, depth, new_limit) candidates.extend(zip_candidates) return candidates except Exception as zip_exc: # too many exception types might be produced with broken zip logger.warning("%s:%s", data_provider.file_path, zip_exc) return None ================================================ FILE: credsweeper/deep_scanner/zlib_scanner.py ================================================ import logging import zlib from abc import ABC from typing import List, Optional from credsweeper.credentials.candidate import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider logger = logging.getLogger(__name__) class ZlibScanner(AbstractScanner, ABC): """Implements zlib data inflate and scan""" @staticmethod def match(data: bytes | bytearray) -> bool: """Returns True if data looks like deflated data with zlib""" if 6 < len(data): cmf = data[0] flg = data[1] if 8 == (0xF & cmf) and 7 >= (cmf >> 4) and 0 == ((cmf << 8) | flg) % 31 and 0 == (0x20 & flg): if 0x3 != (data[2] >> 1): # the last check of impossible bits return True return False @staticmethod def decompress(limit: int, data: bytes) -> bytes: """Returns decompressed data by chunks with a limit or exception in unusual cases""" zlib_obj = zlib.decompressobj() result = zlib_obj.decompress(data, max_length=limit) if zlib_obj.unconsumed_tail: raise ValueError(f"Limit exceeds for {len(zlib_obj.unconsumed_tail)}") if not zlib_obj.eof: raise ValueError("Truncated zlib stream") if zlib_obj.unused_data: raise ValueError(f"Unused data {len(zlib_obj.unused_data)}") return result def data_scan( self, # data_provider: DataContentProvider, # depth: int, # recursive_limit_size: int) -> Optional[List[Candidate]]: """Inflate data from zlib compressed and launches data_scan""" try: decompressed = ZlibScanner.decompress(recursive_limit_size, data_provider.data) zlib_content_provider = DataContentProvider(data=decompressed, file_path=data_provider.file_path, file_type=data_provider.file_type, info=f"{data_provider.info}|ZLIB") new_limit = recursive_limit_size - len(decompressed) zlib_candidates = self.recursive_scan(zlib_content_provider, depth, new_limit) return zlib_candidates except Exception as zlib_exc: logger.warning("%s:%s", data_provider.file_path, zlib_exc) return None ================================================ FILE: credsweeper/file_handler/__init__.py ================================================ ================================================ FILE: credsweeper/file_handler/abstract_provider.py ================================================ import io from abc import ABC, abstractmethod from pathlib import Path from typing import Union, Tuple, Sequence from credsweeper.config.config import Config from credsweeper.file_handler.content_provider import ContentProvider class AbstractProvider(ABC): """Base class for all files provider objects.""" def __init__(self, paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]]) -> None: """Initialize Files Provider object for 'paths'. Args: paths: file paths list to scan or io.BytesIO or tuple with both """ self.paths = paths @property def paths(self) -> Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]]: """paths getter""" return self.__paths @paths.setter def paths(self, paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]]) -> None: """paths setter""" self.__paths = paths @abstractmethod def get_scannable_files(self, config: Config) -> Sequence[ContentProvider]: """Get list of file object for analysis based on attribute "paths". Args: config: dict of credsweeper configuration Return: file objects to analyse """ raise NotImplementedError() ================================================ FILE: credsweeper/file_handler/analysis_target.py ================================================ from functools import cached_property from typing import List, Optional from credsweeper.file_handler.descriptor import Descriptor class AnalysisTarget: """AnalysisTarget""" def __init__( self, line_pos: int, lines: List[str], line_nums: List[int], descriptor: Descriptor, line: Optional[str] = None, offset: Optional[int] = None, ): self.__line_pos = line_pos self.__lines = lines self.__line_nums = line_nums self.__descriptor = descriptor self.__line = line self.__offset = offset @cached_property def offset(self) -> Optional[int]: """cached value""" # when the offset is not None - it means that original line was split into chunks return self.__offset @cached_property def line(self) -> str: """cached value""" if self.__line is None: # normal target return self.__lines[self.__line_pos] # chunked target return self.__line @cached_property def line_len(self) -> int: """cached value""" return len(self.line) @cached_property def line_strip(self) -> str: """cached value""" return self.line.strip() @cached_property def line_strip_len(self) -> int: """cached value""" return len(self.line_strip) @cached_property def line_lower(self) -> str: """cached value""" return self.line.lower() @cached_property def line_lower_strip(self) -> str: """cached value""" return self.line_lower.strip() @cached_property def lines(self) -> List[str]: """cached value""" return self.__lines @cached_property def lines_len(self) -> int: """cached value""" return len(self.__lines) @cached_property def line_pos(self) -> int: """cached value""" return self.__line_pos @cached_property def line_num(self) -> int: """cached value""" return self.__line_nums[self.__line_pos] @cached_property def line_nums(self) -> List[int]: """cached value""" return self.__line_nums @cached_property def file_path(self) -> Optional[str]: """cached value""" return self.__descriptor.path @cached_property def file_type(self) -> Optional[str]: """cached value""" return self.__descriptor.extension @cached_property def info(self) -> Optional[str]: """cached value""" return self.__descriptor.info @cached_property def descriptor(self) -> Descriptor: """cached value""" return self.__descriptor ================================================ FILE: credsweeper/file_handler/byte_content_provider.py ================================================ import logging from functools import cached_property from typing import List, Optional, Generator from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class ByteContentProvider(ContentProvider): """Allow to scan byte sequence instead of extra reading a file""" def __init__( self, # content: bytes, # file_path: Optional[str] = None, # file_type: Optional[str] = None, # info: Optional[str] = None) -> None: """ Parameters: content: The bytes are transformed to an array of lines with split by new line character. """ super().__init__(file_path=file_path, file_type=file_type, info=info) self.__data = content self.__lines: Optional[List[str]] = None @cached_property def data(self) -> Optional[bytes]: """data RO getter for ByteContentProvider""" return self.__data def free(self) -> None: """free data after scan to reduce memory usage""" self.__data = None if "data" in self.__dict__: delattr(self, "data") self.__lines = None if "lines" in self.__dict__: delattr(self, "lines") @cached_property def lines(self) -> List[str]: """lines RO getter for ByteContentProvider""" if self.__lines is None: text = Util.decode_text(self.__data) if text is None: if not self.info.endswith("|BASE64|RAW"): # avoid extra warnings for the hypothesis logger.warning("Binary data detected %s %s %s", self.file_path, self.info, repr(self.__data[:32]) if isinstance(self.__data, bytes) else "NONE") self.__lines = [] else: self.__lines = Util.split_text(text) return self.__lines if self.__lines is not None else [] def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]: """Return lines to scan. Args: min_len: minimal line length to scan Return: list of analysis targets based on every row in a content """ return self.lines_to_targets(min_len, self.lines) ================================================ FILE: credsweeper/file_handler/content_provider.py ================================================ import logging from abc import ABC, abstractmethod from functools import cached_property from typing import List, Optional, Generator from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.descriptor import Descriptor from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class ContentProvider(ABC): """Base class to provide access to analysis targets for scanned object.""" def __init__( self, # file_path: Optional[str] = None, # file_type: Optional[str] = None, # info: Optional[str] = None) -> None: """ Parameters: file_path: optional string. Might be specified if you know the file name where data were taken from. file_type: optional string. File extension e.g. ".java". It might be obtained from file_path if not given. info: optional string. Any information to help understand how a credential was found. """ _file_path: str = file_path or "" _file_type: str = file_type if file_type is not None else Util.get_extension(file_path) _info: str = info or "" self.__descriptor = Descriptor(_file_path, _file_type, _info) @abstractmethod def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]: """Load and preprocess file diff data to scan. Args: min_len: minimal line length to scan Return: row objects to analysing """ raise NotImplementedError() @cached_property def descriptor(self) -> Descriptor: """descriptor getter""" return self.__descriptor @cached_property def file_path(self) -> str: """file_path getter""" return self.__descriptor.path @cached_property def file_type(self) -> str: """file_type getter""" return self.__descriptor.extension @cached_property def info(self) -> str: """info getter""" return self.__descriptor.info @cached_property @abstractmethod def data(self) -> Optional[bytes]: """abstract data getter""" raise NotImplementedError(__name__) @abstractmethod def free(self) -> None: """free data after scan to reduce memory usage""" raise NotImplementedError(__name__) def lines_to_targets( self, # min_len: int, lines: List[str], # line_nums: Optional[List[int]] = None) -> Generator[AnalysisTarget, None, None]: """Creates list of targets with multiline concatenation""" lines_range = range(len(lines)) if line_nums is None or len(line_nums) != len(lines): if line_nums is not None: logger.warning("Line numerations %s does not match lines %s. Plain numeration applied", len(line_nums), len(lines)) line_nums = [1 + x for x in lines_range] for line_pos in lines_range: line = lines[line_pos] if min_len > len(line.strip()): # Ignore target if stripped part is too short for all types continue if MAX_LINE_LENGTH < len(line): for chunk_start, chunk_end in Util.get_chunks(len(line)): target = AnalysisTarget( line_pos=line_pos, # lines=lines, # line_nums=line_nums, # descriptor=self.descriptor, # line=line[chunk_start:chunk_end], # offset=chunk_start) yield target else: target = AnalysisTarget(line_pos, lines, line_nums, self.descriptor) yield target ================================================ FILE: credsweeper/file_handler/data_content_provider.py ================================================ import json import logging import warnings from functools import cached_property from typing import List, Optional, Any, Generator, Callable, Tuple import yaml from bs4 import BeautifulSoup, Tag, XMLParsedAsHTMLWarning from credsweeper.common.constants import MIN_DATA_LEN from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.utils.util import Util warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning, module='bs4') logger = logging.getLogger(__name__) # 12345678 - minimal xml with a credential MIN_XML_LEN = 16 class DataContentProvider(ContentProvider): """Dummy raw provider to keep bytes""" def __init__( self, # data: bytes, # file_path: Optional[str] = None, # file_type: Optional[str] = None, # info: Optional[str] = None) -> None: """ Parameters: data: byte sequence to be stored for deep analysis """ super().__init__(file_path=file_path, file_type=file_type, info=info) self.__data = data self.__text: Optional[str] = None self.structure: Optional[List[Any]] = None self.decoded: Optional[bytes] = None self.lines: List[str] = [] self.line_numbers: List[int] = [] self.__html_lines_size = len(data) # the size is used to limit extra memory consumption during html combination @cached_property def data(self) -> Optional[bytes]: """data RO getter for DataContentProvider and the property is used in deep scan""" return self.__data def free(self) -> None: """free data after scan to reduce memory usage""" self.__data = None if "data" in self.__dict__: delattr(self, "data") self.__text = None if "text" in self.__dict__: delattr(self, "text") self.structure = None self.decoded = None self.lines = [] self.line_numbers = [] @cached_property def text(self) -> str: """Getter to produce a text from DEFAULT_ENCODING. Empty str for unrecognized data""" if self.__text is None: self.__text = Util.decode_text(self.__data) or '' return self.__text def __is_structure(self) -> bool: """Check whether a structure was recognized""" return self.structure is not None and (isinstance(self.structure, dict) and 0 < len(self.structure.keys()) or isinstance(self.structure, list) and 0 < len(self.structure)) def represent_as_structure(self) -> Optional[bool]: """Tries to convert data with many parsers. Stores result to internal structure Return: True if some structure found False if no data found None if the format is not acceptable """ if MIN_DATA_LEN > len(self.text): return False # JSON & NDJSON if '{' in self.text and '}' in self.text and '"' in self.text and ':' in self.text: try: self.structure = json.loads(self.text) logger.debug("CONVERTED from json") except Exception as exc: logger.debug("Cannot parse as json:%s %s", exc, self.data) else: if self.__is_structure(): return True try: self.structure = [] for line in self.text.splitlines(): # each line must be in json format, otherwise - exception rises self.structure.append(json.loads(line)) logger.debug("CONVERTED from ndjson") except Exception as exc: logger.debug("Cannot parse as ndjson:%s %s", exc, self.data) self.structure = None else: if self.__is_structure(): return True else: logger.debug("Data do not contain { - weak JSON") # # # Python try: # search only in sources with strings if (';' in self.text or 2 < self.text.count('\n') or 2 < self.text.count('\r')) \ and ('"' in self.text or "'" in self.text): self.structure = Util.parse_python(self.text) logger.debug("CONVERTED from Python") else: logger.debug("Data do not contain line feed - weak PYTHON") except Exception as exc: logger.debug("Cannot parse as Python:%s %s", exc, self.data) else: if self.__is_structure(): return True # # # YAML - almost always recognized try: if ':' in self.text and (2 < self.text.count('\n') or 2 < self.text.count('\r')): self.structure = yaml.safe_load(self.text) logger.debug("CONVERTED from yaml") else: logger.debug("Data do not contain colon mark - weak YAML") except Exception as exc: logger.debug("Cannot parse as yaml:%s %s", exc, self.data) else: if self.__is_structure(): return True # # # None of above return None def represent_as_xml(self) -> Optional[bool]: """Tries to read data as xml Return: True if reading was successful False if no data found None if the format is not acceptable """ if MIN_XML_LEN > len(self.text): return False try: if '<' in self.text and '>' in self.text and " Optional[Tuple[int, str]]: """multiline cell will be analysed as text or return single line from cell returns line number and one line for analysis If there are no text or the text will be analysed as multiline - it returns None""" # use not stripped get_text, otherwise all format is cleaned cell_text = cell.get_text() cell_lines = cell_text.splitlines() line_numbers: List[int] = [] stripped_lines: List[str] = [] for offset, line in enumerate(cell_lines): if stripped_line := line.strip(): line_numbers.append(cell.sourceline + offset) stripped_lines.append(stripped_line) if not stripped_lines: return None if 1 == len(stripped_lines): return line_numbers[0], stripped_lines[0] # otherwise the cell will be analyzed as multiline text self.line_numbers.extend(line_numbers) self.lines.extend(stripped_lines) self.__html_lines_size += sum(len(x) for x in stripped_lines) return None @staticmethod def simple_html_representation(html: BeautifulSoup) -> Tuple[List[int], List[str], int]: """simple parse as it is displayed to user and appends the lines""" line_numbers: List[int] = [] lines: List[str] = [] lines_size = 0 # use dedicated variable to deal with yapf and flake tags_to_split = [ "p", "br", "tr", "li", "ol", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "pre", "div", "th", "td" ] for p in html.find_all(tags_to_split): p.append('\t') html_lines = html.get_text().splitlines() for line_number, doc_line in enumerate(html_lines): line = doc_line.strip() if line: line_numbers.append(line_number + 1) lines.append(line) lines_size += len(line) return line_numbers, lines, lines_size @staticmethod def _table_depth_reached(table: Tag, depth: int) -> bool: if parent := table.parent: if isinstance(parent, BeautifulSoup): return False if 0 > depth: return True if "table" == parent.name: depth -= 1 return DataContentProvider._table_depth_reached(parent, depth) return True def _table_representation( self, # table: Tag, # depth: int, # recursive_limit_size: int, # keywords_required_substrings_check: Callable[[str], bool]): """ transform table if table cell is assigned to header cell make from cells a chain like next is assigned to previous """ if DataContentProvider._table_depth_reached(table, depth): logger.warning("Recursive depth limit was reached during HTML table combinations") return table_header: Optional[List[Optional[str]]] = None rowspan_columns = [] for tr in table.find_all("tr"): if recursive_limit_size < self.__html_lines_size: # weird tables may lead to oversize memory break record_numbers = [] record_lines = [] record_leading = None if table_header is None: table_header = [] # first row in table may be a header with and a style, but search too for cell in tr.find_all(["th", "td"]): if recursive_limit_size < self.__html_lines_size: # keep the duplicates for early breaks! break colspan_header = int(cell.get("colspan", 1)) if td_numbered_line := self._check_multiline_cell(cell): td_text = td_numbered_line[1] td_text_has_keywords = keywords_required_substrings_check(td_text.lower()) for _ in range(colspan_header): rowspan_header = int(cell.get("rowspan", 1)) rowspan_columns.append(rowspan_header) if td_text_has_keywords: table_header.append(td_text) else: table_header.append(None) if record_leading is None: if td_text_has_keywords: record_leading = td_text else: record_leading = "" else: record_numbers.append(td_numbered_line[0]) record_lines.append(f"{record_leading} : {td_text}") # add single text to lines for analysis self.line_numbers.append(td_numbered_line[0]) self.lines.append(td_text) self.__html_lines_size += len(td_text) else: # empty cell or multiline cell for _ in range(colspan_header): # number of columns is defined with header only rowspan_header = int(cell.get("rowspan", 1)) rowspan_columns.append(rowspan_header) table_header.append(None) else: header_pos = 0 # not a first line in table - may be combined with a header for cell in tr.find_all("td"): if recursive_limit_size < self.__html_lines_size: # keep the duplicates for early breaks! break while header_pos < len(rowspan_columns) and 1 < rowspan_columns[header_pos]: rowspan_columns[header_pos] -= 1 header_pos += 1 colspan_cell = int(cell.get("colspan", 1)) rowspan_cell = int(cell.get("rowspan", 1)) for i in range(header_pos, header_pos + colspan_cell): if i < len(rowspan_columns): rowspan_columns[i] += rowspan_cell - 1 if td_numbered_line := self._check_multiline_cell(cell): td_text = td_numbered_line[1] if record_leading is None: td_text_has_keywords = keywords_required_substrings_check(td_text.lower()) if td_text_has_keywords: record_leading = td_text else: record_leading = "" elif record_leading: record_numbers.append(td_numbered_line[0]) record_lines.append(f"{record_leading} : {td_text}") if header_pos < len(table_header): if header_text := table_header[header_pos]: self.line_numbers.append(td_numbered_line[0]) self.lines.append(f"{header_text} : {td_text}") self.__html_lines_size += len(td_text) else: # empty cell or multiline cell table_header.append(None) header_pos += colspan_cell if record_lines: # add combinations with left column self.line_numbers.extend(record_numbers) self.lines.extend(record_lines) self.__html_lines_size += sum(len(x) for x in record_lines) def _html_tables_representation( self, # html: BeautifulSoup, # depth: int, # recursive_limit_size: int, # keywords_required_substrings_check: Callable[[str], bool]): """Iterates for all tables in html to explore cells and their combinations""" depth -= 1 if 0 > depth: return for table in html.find_all("table"): if recursive_limit_size < self.__html_lines_size: logger.warning("Recursive size limit was reached during HTML table combinations") break self._table_representation(table, depth, recursive_limit_size, keywords_required_substrings_check) def represent_as_html( self, # depth: int, # recursive_limit_size: int, # keywords_required_substrings_check: Callable[[str], bool]) -> Optional[bool]: """Tries to read data as html Return: True if reading was successful False if no data found None if the format is not acceptable """ try: if "" in self.text: if html := BeautifulSoup(self.text, features="html.parser"): line_numbers, lines, lines_size = self.simple_html_representation(html) self.line_numbers.extend(line_numbers) self.lines.extend(lines) self.__html_lines_size += lines_size # apply recursive_limit_size/2 to reduce extra calculation # of all accompanying losses per objects allocation self._html_tables_representation(html, depth, recursive_limit_size >> 1, keywords_required_substrings_check) logger.debug("CONVERTED from html") else: logger.debug("Data do not contain specific tags - weak HTML") except Exception as exc: logger.debug("Cannot parse as HTML:%s %s", exc, self.data) else: return bool(self.lines and self.line_numbers) return None def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]: """Return nothing. The class provides only data storage. Args: min_len: minimal line length to scan Raise: NotImplementedError """ raise NotImplementedError() ================================================ FILE: credsweeper/file_handler/descriptor.py ================================================ from dataclasses import dataclass @dataclass(frozen=True) class Descriptor: """Descriptor for file - optimize memory consumption""" path: str extension: str info: str ================================================ FILE: credsweeper/file_handler/diff_content_provider.py ================================================ import logging from dataclasses import dataclass from functools import cached_property from typing import List, Tuple, Generator, TypedDict, Optional, Union, Any, Dict, cast import whatthepatch from credsweeper.common.constants import DiffRowType from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider logger = logging.getLogger(__name__) DiffDict = TypedDict( "DiffDict", { "old": Optional[int], # "new": Optional[int], # "line": Union[str, bytes], # bytes are possibly since whatthepatch v1.0.4 "hunk": Any # not used }) @dataclass(frozen=True) class DiffRowData: """Class for keeping data of diff row.""" line_type: DiffRowType line_numb: int line: str class DiffContentProvider(ContentProvider): """Provide data from a single `.patch` file. Parameters: file_path: path to file change_type: set added or deleted file data to scan diff: list of file row changes, with base elements represented as:: { "old": line number before diff, "new": line number after diff, "line": line text, "hunk": diff hunk number } """ def __init__( self, # file_path: str, # change_type: DiffRowType, # diff: List[DiffDict]) -> None: super().__init__(file_path=file_path, info=f"{file_path}:{change_type.value}") self.__change_type = change_type self.__diff = diff @cached_property def data(self) -> bytes: """data getter for DiffContentProvider""" raise NotImplementedError(__name__) @cached_property def diff(self) -> List[DiffDict]: """diff getter for DiffContentProvider""" return self.__diff def free(self) -> None: """free data after scan to reduce memory usage""" self.__diff = [] if "diff" in self.__dict__: delattr(self, "diff") @staticmethod def parse_lines_data(change_type: DiffRowType, lines_data: List[DiffRowData]) -> Tuple[List[int], List[str]]: """Parse diff lines data. Return list of line numbers with change type "self.change_type" and list of all lines in file in original order(replaced all lines not mentioned in diff file with blank line) Args: change_type: set added or deleted file data to scan lines_data: data of all rows mentioned in diff file Return: tuple of line numbers with change type "self.change_type" and all file lines in original order(replaced all lines not mentioned in diff file with blank line) """ change_numbs = [] all_lines = [] for line_data in lines_data: if line_data.line_type == change_type: change_numbs.append(line_data.line_numb) all_lines.append(line_data.line) return change_numbs, all_lines @staticmethod def patch2files_diff(raw_patch: List[str], change_type: DiffRowType) -> Dict[str, List[DiffDict]]: """Generate files changes from patch for added or deleted filepaths. Args: raw_patch: git patch file content change_type: change type to select, DiffRowType.ADDED or DiffRowType.DELETED Return: return dict with ``{file paths: list of file row changes}``, where elements of list of file row changes represented as:: { "old": line number before diff, "new": line number after diff, "line": line text, "hunk": diff hunk number } """ if not raw_patch: return {} added_files: Dict[str, List[DiffDict]] = {} deleted_files: Dict[str, List[DiffDict]] = {} try: for patch in whatthepatch.parse_patch(raw_patch): if patch.changes is None: logger.warning("Patch '%s' cannot be scanned", str(patch.header)) continue changes: List[DiffDict] = [] for change in patch.changes: change_dict = cast(DiffDict, change._asdict()) changes.append(change_dict) if patch.header: added_files[patch.header.new_path] = changes deleted_files[patch.header.old_path] = changes if change_type == DiffRowType.ADDED: return added_files if change_type == DiffRowType.DELETED: return deleted_files logger.error("Change type should be one of: '%s', '%s'; but received %s", DiffRowType.ADDED, DiffRowType.DELETED, change_type) except Exception as exc: logger.warning(exc) return {} @staticmethod def preprocess_diff_rows( added_line_number: Optional[int], # deleted_line_number: Optional[int], # line: str) -> List[DiffRowData]: """Auxiliary function to extend diff changes. Args: added_line_number: number of added line or None deleted_line_number: number of deleted line or None line: the text line Return: diff rows data with as list of row change type, line number, row content """ rows_data: List[DiffRowData] = [] if isinstance(added_line_number, int): # indicates line was inserted rows_data.append(DiffRowData(DiffRowType.ADDED, added_line_number, line)) if isinstance(deleted_line_number, int): # indicates line was removed rows_data.append(DiffRowData(DiffRowType.DELETED, deleted_line_number, line)) return rows_data @staticmethod def wrong_change(change: DiffDict) -> bool: """Returns True if the change is wrong""" for i in ["line", "new", "old"]: if i not in change: logger.warning("Skipping wrong change %s", change) return True return False @staticmethod def preprocess_file_diff(changes: List[DiffDict]) -> List[DiffRowData]: """Generate changed file rows from diff data with changed lines (e.g. marked + or - in diff). Args: changes: git diff by file rows data Return: diff rows data with as list of row change type, line number, row content """ if not changes: return [] rows_data = [] # process diff to restore lines and their positions for change in changes: if DiffContentProvider.wrong_change(change): continue if text := change["line"]: if isinstance(text, str): diff_rows = DiffContentProvider.preprocess_diff_rows(change.get("new"), change.get("old"), text) rows_data.extend(diff_rows) elif isinstance(text, (bytes, bytearray)): logger.warning("The feature is available with the deep scan option") else: logger.warning("Unknown type of line %s", type(text)) else: logger.debug("Change has no valuable text %s", change) return rows_data def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]: """Preprocess file diff data to scan. Args: min_len: minimal line length to scan Return: list of analysis targets of every row of file diff corresponding to change type "self.change_type" """ lines_data = DiffContentProvider.preprocess_file_diff(self.__diff) change_numbs, all_lines = self.parse_lines_data(self.__change_type, lines_data) return self.lines_to_targets(min_len, all_lines, change_numbs) ================================================ FILE: credsweeper/file_handler/file_path_extractor.py ================================================ import io import logging import os from pathlib import Path from typing import List, Dict, Union, Tuple from git import InvalidGitRepositoryError, NoSuchPathError, Repo from credsweeper.common.constants import MIN_DATA_LEN from credsweeper.config.config import Config from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class FilePathExtractor: """Util class to browse files in directories""" FIND_BY_EXT_RULE = "Suspicious File Extension" located_repos: Dict[Path, Repo] = {} @staticmethod def apply_gitignore(detected_files: List[str]) -> List[str]: """Apply gitignore rules for each file. Args: detected_files: list of files to be checked Return: List of files with all files ignored by git removed """ filtered_files = [file_path for file_path in detected_files if FilePathExtractor.is_valid_path(file_path)] return filtered_files @staticmethod def get_file_paths(config: Config, path: Union[str, Path]) -> List[str]: """Get all files in the directory. Automatically exclude files non-code or data files (such as .jpg). Args: config: credsweeper configuration path: path to the file or directory to be scanned Return: List all non-excluded files in the directory """ path = os.path.expanduser(path) # Replace ~ character with a full path to the home directory if not os.path.exists(path): logger.warning("Path '%s' does not exist", path) file_paths = [] if os.path.isfile(path): # suppose, the file is located outside and should be scanned if not FilePathExtractor.check_exclude_file(config, path): file_paths.append(path) elif os.path.isdir(path): for dirpath, _, filenames in os.walk(path): for filename in filenames: file_path = os.path.join(f"{dirpath}", f"{filename}") if FilePathExtractor.check_exclude_file(config, file_path) or os.path.islink(file_path): continue if os.path.isfile(file_path) and not FilePathExtractor.check_file_size(config, file_path): file_paths.append(file_path) else: pass # symbolic links and so on return file_paths @classmethod def is_valid_path(cls, path: str) -> bool: """Locate nearest .git directory to the path and check if path is ignored. Args: path: path to the file or directory to check Return: False if file is ignored by git. True otherwise """ parent_directory = Path(path).parent # Iterate over file path to find nearest ".git" directory while True: try: if parent_directory in cls.located_repos: repo = cls.located_repos[parent_directory] else: # The directory must have ".git" in it. If not it occurs error. repo = Repo(parent_directory) # Cache already located repositories, so we would not need to load it for each new file cls.located_repos[parent_directory] = repo # Return True if there is no ignored file in 'path' and False if any. return len(repo.ignored(path)) == 0 except (InvalidGitRepositoryError, NoSuchPathError): new_parent = parent_directory.parent # If we encountered root and cannot move further: no .git directory located in the entire path if new_parent == parent_directory: return True parent_directory = new_parent @staticmethod def is_find_by_ext_file(config: Config, extension: str) -> bool: """ Checks whether file has suspicious extension Args: config: Config extension: str - may be only file name with extension Return: True when the feature is configured and the file extension matches """ return config.find_by_ext and extension in config.find_by_ext_list @staticmethod def check_exclude_file(config: Config, path: str) -> bool: """ Checks whether file should be excluded Args: config: Config path: str - full path preferred Return: True when the file full path should be excluded according config """ if config.pedantic: return False path = path.replace('\\', '/') lower_path = path.lower() if config.not_allowed_path_pattern.match(lower_path): return True for exclude_pattern in config.exclude_patterns: if exclude_pattern.match(lower_path): return True for exclude_path in config.exclude_paths: # must be case-sensitive if exclude_path in path: return True file_extension = Util.get_extension(lower_path, lower=False) if file_extension in config.exclude_extensions: return True if not config.depth and file_extension in config.exclude_containers: return True # --depth or --doc enables scan for all documents extensions if not (config.depth or config.doc) and file_extension in config.exclude_documents: return True return False @staticmethod def check_file_size(config: Config, reference: Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]) -> bool: """ Checks whether the file is over the size limit from configuration or less MIN_DATA_LEN Args: config: Config reference: various types of a file reference Return: True when the file is oversize or less than MIN_DATA_LEN, or unsupported """ path = reference[1] if isinstance(reference, tuple) else reference if isinstance(path, (str, Path)): file_size = os.path.getsize(path) elif isinstance(path, io.BytesIO): current_pos = path.tell() path.seek(0, io.SEEK_END) file_size = path.tell() - current_pos path.seek(current_pos, io.SEEK_SET) else: logger.error("Unknown path type: %s", path) return True if MIN_DATA_LEN > file_size: logger.debug("Size (%s) of the file '%s' is too small", file_size, path) return True if isinstance(config.size_limit, int) and config.size_limit < file_size: logger.warning("Size (%s) of the file '%s' is over limit (%s)", file_size, path, config.size_limit) return True return False ================================================ FILE: credsweeper/file_handler/files_provider.py ================================================ import io import logging from pathlib import Path from typing import List, Optional, Union, Tuple, Sequence from credsweeper.config.config import Config from credsweeper.file_handler.abstract_provider import AbstractProvider from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor from credsweeper.file_handler.text_content_provider import TextContentProvider logger = logging.getLogger(__name__) class FilesProvider(AbstractProvider): """Provider of plain os files to be analysed.""" def __init__(self, paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]], skip_ignored: Optional[bool] = None) -> None: """Initialize Files Text Provider for files from 'paths'. Args: paths: list of parent paths of files to scan OR tuple of path (info purpose) and io.BytesIO (reads the data from current pos) skip_ignored: boolean variable, Checking the directory to the list of ignored directories from the gitignore file """ super().__init__(paths) self.skip_ignored = skip_ignored def get_scannable_files(self, config: Config) -> Sequence[ContentProvider]: """Get list of full text file object for analysis of files with parent paths from "paths". Args: config: dict of credsweeper configuration Return: preprocessed file objects for analysis """ text_content_provider_list: List[ContentProvider] = [] for path in self.paths: if isinstance(path, (str, Path)): new_files = FilePathExtractor.get_file_paths(config, path) if self.skip_ignored: new_files = FilePathExtractor.apply_gitignore(new_files) for _file in new_files: text_content_provider_list.append(TextContentProvider(_file)) elif isinstance(path, io.BytesIO): text_content_provider_list.append(TextContentProvider((":memory:", path))) elif isinstance(path, tuple) and (isinstance(path[0], (str, Path))) and isinstance(path[1], io.BytesIO): # suppose, all the files must be scanned text_content_provider_list.append(TextContentProvider(path)) else: logger.error("Unknown path type: %s", path) return text_content_provider_list ================================================ FILE: credsweeper/file_handler/patches_provider.py ================================================ import io import logging from pathlib import Path from typing import List, Union, Tuple, Sequence from credsweeper.common.constants import DiffRowType from credsweeper.config.config import Config from credsweeper.file_handler.abstract_provider import AbstractProvider from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.file_handler.diff_content_provider import DiffContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class PatchesProvider(AbstractProvider): """Provide data from a list of `.patch` files. """ def __init__(self, paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]], change_type: DiffRowType) -> None: """Initialize Files Patch Provider for patch files from 'paths'. Args: paths: file paths list to scan. All files should be in `.patch` format change_type: DiffRowType, type of analyses changes in patch (added or deleted) of ignored directories from the gitignore file """ super().__init__(paths) self.change_type = change_type def load_patch_data(self, config: Config) -> List[List[str]]: """Loads data from patch""" raw_patches = [] for file_path in self.paths: if FilePathExtractor.check_file_size(config, file_path): continue if isinstance(file_path, (str, Path)): raw_patches.append(Util.read_file(file_path)) elif isinstance(file_path, io.BytesIO): the_patch = Util.decode_bytes(file_path.read()) raw_patches.append(the_patch) elif isinstance(file_path, tuple) and 1 < len(file_path) and isinstance(file_path[1], io.BytesIO): the_patch = Util.decode_bytes(file_path[1].read()) raw_patches.append(the_patch) else: logger.error("Unknown path type: %s", file_path) return raw_patches def get_files_sequence(self, raw_patches: List[List[str]]) -> Sequence[ContentProvider]: """Returns sequence of files""" files: List[ContentProvider] = [] for raw_patch in raw_patches: files_data = DiffContentProvider.patch2files_diff(raw_patch, self.change_type) for file_path, file_diff in files_data.items(): files.append(DiffContentProvider(file_path=file_path, change_type=self.change_type, diff=file_diff)) return files def get_scannable_files(self, config: Config) -> Sequence[ContentProvider]: """Get files to scan. Output based on the `paths` field. Args: config: dict of credsweeper configuration Return: file objects for analysing """ diff_data = self.load_patch_data(config) files = self.get_files_sequence(diff_data) return files ================================================ FILE: credsweeper/file_handler/string_content_provider.py ================================================ from functools import cached_property from typing import List, Optional, Generator from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider class StringContentProvider(ContentProvider): """Provider performs scan simple text lines""" def __init__( self, # lines: List[str], # line_numbers: Optional[List[int]] = None, # file_path: Optional[str] = None, # file_type: Optional[str] = None, # info: Optional[str] = None) -> None: """ Parameters: lines: text lines to be processed line_numbers: matched line numbers for lines if the order is not natural. Otherwise, it will be filled with natural order from 1. """ super().__init__(file_path=file_path, file_type=file_type, info=info) self.__lines = lines # fill line numbers only when amounts are equal if line_numbers is None or len(lines) != len(line_numbers): self.__line_numbers = None else: self.__line_numbers = line_numbers @cached_property def data(self) -> bytes: """data getter for StringContentProvider""" raise NotImplementedError(__name__) def free(self) -> None: """free data after scan to reduce memory usage""" self.__lines = [] if "lines" in self.__dict__: delattr(self, "lines") self.__line_numbers = [] if "line_numbers" in self.__dict__: delattr(self, "line_numbers") @cached_property def lines(self) -> List[str]: """line_numbers RO getter for StringContentProvider""" return self.__lines @cached_property def line_numbers(self) -> List[int]: """line_numbers RO getter for StringContentProvider""" if self.__line_numbers is None or len(self.__lines) != len(self.__line_numbers): self.__line_numbers = list(range(1, 1 + len(self.__lines))) if self.__lines else [] return self.__line_numbers def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]: """Return lines to scan. Args: min_len: minimal line length to scan Return: list of analysis targets based on every row in file """ return self.lines_to_targets(min_len, self.lines, self.line_numbers) ================================================ FILE: credsweeper/file_handler/struct_content_provider.py ================================================ import logging from functools import cached_property from typing import Optional, Any, Generator from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider logger = logging.getLogger(__name__) class StructContentProvider(ContentProvider): """Content provider to keep structured data""" def __init__( self, # struct: Any, # file_path: Optional[str] = None, # file_type: Optional[str] = None, # info: Optional[str] = None) -> None: """ Parameters: struct: Various structure (string, dictionary, list) """ super().__init__(file_path=file_path, file_type=file_type, info=info) self.__struct = struct @cached_property def data(self) -> bytes: """data getter for StructContentProvider""" raise NotImplementedError(__name__) @cached_property def struct(self) -> Any: """struct getter for StructContentProvider""" return self.__struct def free(self) -> None: """free data after scan to reduce memory usage""" self.__struct = None if "struct" in self.__dict__: delattr(self, "struct") def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]: """Return nothing. The class provides only data storage. Args: min_len: minimal line length to scan Raise: NotImplementedError """ raise NotImplementedError() ================================================ FILE: credsweeper/file_handler/text_content_provider.py ================================================ import io import logging from functools import cached_property from pathlib import Path from typing import List, Optional, Union, Tuple, Generator from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class TextContentProvider(ContentProvider): """Provide access to analysis targets for full-text file scanning. Parameters: file_path: string, path to file """ def __init__(self, file_path: Union[str, Path, Tuple[Union[str, Path], io.BytesIO]], file_type: Optional[str] = None, info: Optional[str] = None) -> None: _path = str(file_path[0]) if isinstance(file_path, tuple) else str(file_path) self.__io = file_path[1] if isinstance(file_path, tuple) else None self.__data: Optional[bytes] = None self.__lines: Optional[List[str]] = None super().__init__(file_path=_path, file_type=file_type, info=info) @cached_property def data(self) -> Optional[bytes]: """data RO getter for TextContentProvider""" if self.__data is None: if isinstance(self.__io, io.BytesIO) and self.__io: self.__data = self.__io.read() else: self.__data = Util.read_data(self.file_path) return self.__data def free(self) -> None: """free data after scan to reduce memory usage""" self.__data = None if "data" in self.__dict__: delattr(self, "data") self.__lines = None if "lines" in self.__dict__: delattr(self, "lines") if isinstance(self.__io, io.BytesIO) and self.__io and not self.__io.closed: self.__io.close() @cached_property def lines(self) -> Optional[List[str]]: """lines getter for TextContentProvider""" if self.__lines is None: text = Util.decode_text(self.data) if isinstance(text, str): self.__lines = Util.split_text(text) elif isinstance(self.__data, bytes): logger.warning("Binary file detected %s %s %s", self.file_path, self.info, repr(self.__data[:32]) if isinstance(self.__data, bytes) else "NONE") self.__lines = [] return self.__lines if self.__lines is not None else [] def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]: """Load and preprocess file content to scan. Args: min_len: minimal line length to scan Return: list of analysis targets based on every row in file """ lines: Optional[List[str]] = None line_nums: Optional[List[int]] = None if Util.get_extension(self.file_path) == ".xml": try: # append line ending for correct xml line numeration xml_lines = [f"{line}\n" for line in self.lines] lines, line_nums = Util.get_xml_from_lines(xml_lines) except Exception as exc: logger.warning("Cannot parse to xml %s", exc) if lines is None: lines = self.lines return self.lines_to_targets(min_len, lines, line_nums) ================================================ FILE: credsweeper/filters/__init__.py ================================================ from credsweeper.filters.line_git_binary_check import LineGitBinaryCheck from credsweeper.filters.line_specific_key_check import LineSpecificKeyCheck from credsweeper.filters.line_uue_part_check import LineUUEPartCheck from credsweeper.filters.value_allowlist_check import ValueAllowlistCheck from credsweeper.filters.value_array_dictionary_check import ValueArrayDictionaryCheck from credsweeper.filters.value_atlassian_token_check import ValueAtlassianTokenCheck from credsweeper.filters.value_azure_token_check import ValueAzureTokenCheck from credsweeper.filters.value_base32_data_check import ValueBase32DataCheck from credsweeper.filters.value_base64_data_check import ValueBase64DataCheck from credsweeper.filters.value_base64_encoded_pem_check import ValueBase64EncodedPem from credsweeper.filters.value_base64_key_check import ValueBase64KeyCheck from credsweeper.filters.value_base64_part_check import ValueBase64PartCheck from credsweeper.filters.value_basic_auth_check import ValueBasicAuthCheck from credsweeper.filters.value_blocklist_check import ValueBlocklistCheck from credsweeper.filters.value_camel_case_check import ValueCamelCaseCheck from credsweeper.filters.value_dictionary_keyword_check import ValueDictionaryKeywordCheck from credsweeper.filters.value_discord_bot_check import ValueDiscordBotCheck from credsweeper.filters.value_entropy_base32_check import ValueEntropyBase32Check from credsweeper.filters.value_entropy_base36_check import ValueEntropyBase36Check from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check from credsweeper.filters.value_file_path_check import ValueFilePathCheck from credsweeper.filters.value_github_check import ValueGitHubCheck from credsweeper.filters.value_grafana_check import ValueGrafanaCheck from credsweeper.filters.value_grafana_service_check import ValueGrafanaServiceCheck from credsweeper.filters.value_hex_number_check import ValueHexNumberCheck from credsweeper.filters.value_jfrog_token_check import ValueJfrogTokenCheck from credsweeper.filters.value_json_web_key_check import ValueJsonWebKeyCheck from credsweeper.filters.value_json_web_token_check import ValueJsonWebTokenCheck from credsweeper.filters.value_last_word_check import ValueLastWordCheck from credsweeper.filters.value_length_check import ValueLengthCheck from credsweeper.filters.value_method_check import ValueMethodCheck from credsweeper.filters.value_morphemes_check import ValueMorphemesCheck from credsweeper.filters.value_not_allowed_pattern_check import ValueNotAllowedPatternCheck from credsweeper.filters.value_not_part_encoded_check import ValueNotPartEncodedCheck from credsweeper.filters.value_number_check import ValueNumberCheck from credsweeper.filters.value_pattern_check import ValuePatternCheck from credsweeper.filters.value_sealed_secret_check import ValueSealedSecretCheck from credsweeper.filters.value_search_check import ValueSearchCheck from credsweeper.filters.value_similarity_check import ValueSimilarityCheck from credsweeper.filters.value_split_keyword_check import ValueSplitKeywordCheck from credsweeper.filters.value_string_type_check import ValueStringTypeCheck from credsweeper.filters.value_token_base32_check import ValueTokenBase32Check from credsweeper.filters.value_token_base36_check import ValueTokenBase36Check from credsweeper.filters.value_token_base64_check import ValueTokenBase64Check from credsweeper.filters.value_token_check import ValueTokenCheck ================================================ FILE: credsweeper/filters/filter.py ================================================ from abc import abstractmethod, ABC from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget class Filter(ABC): """Base class for all filters that operates on 'line_data' objects.""" @abstractmethod def __init__(self, config: Optional[Config], *args): """Config is optional for a filter""" raise NotImplementedError() @abstractmethod 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 """ raise NotImplementedError() ================================================ FILE: credsweeper/filters/group/__init__.py ================================================ from credsweeper.filters.group.general_keyword import GeneralKeyword from credsweeper.filters.group.general_pattern import GeneralPattern from credsweeper.filters.group.password_keyword import PasswordKeyword from credsweeper.filters.group.token_pattern import TokenPattern from credsweeper.filters.group.url_credentials_group import UrlCredentialsGroup from credsweeper.filters.group.weird_base36_token import WeirdBase36Token from credsweeper.filters.group.weird_base64_token import WeirdBase64Token ================================================ FILE: credsweeper/filters/group/general_keyword.py ================================================ from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters import ValueDictionaryKeywordCheck, ValueSealedSecretCheck from credsweeper.filters.group.group import Group class GeneralKeyword(Group): """GeneralKeyword""" def __init__(self, config: Config) -> None: super().__init__(config, GroupType.KEYWORD) self.filters.extend([ValueDictionaryKeywordCheck(), ValueSealedSecretCheck()]) ================================================ FILE: credsweeper/filters/group/general_pattern.py ================================================ from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters.group.group import Group class GeneralPattern(Group): """GeneralPattern""" def __init__(self, config: Config) -> None: super().__init__(config, GroupType.PATTERN) ================================================ FILE: credsweeper/filters/group/group.py ================================================ from abc import ABC from typing import List from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters.filter import Filter from credsweeper.filters.line_specific_key_check import LineSpecificKeyCheck from credsweeper.filters.value_allowlist_check import ValueAllowlistCheck from credsweeper.filters.value_array_dictionary_check import ValueArrayDictionaryCheck from credsweeper.filters.value_blocklist_check import ValueBlocklistCheck from credsweeper.filters.value_camel_case_check import ValueCamelCaseCheck from credsweeper.filters.value_file_path_check import ValueFilePathCheck from credsweeper.filters.value_hex_number_check import ValueHexNumberCheck from credsweeper.filters.value_last_word_check import ValueLastWordCheck from credsweeper.filters.value_method_check import ValueMethodCheck from credsweeper.filters.value_not_allowed_pattern_check import ValueNotAllowedPatternCheck from credsweeper.filters.value_pattern_check import ValuePatternCheck from credsweeper.filters.value_similarity_check import ValueSimilarityCheck from credsweeper.filters.value_string_type_check import ValueStringTypeCheck from credsweeper.filters.value_token_check import ValueTokenCheck class Group(ABC): """Abstract Group class""" def __init__(self, config: Config, rule_type: GroupType = GroupType.DEFAULT) -> None: """Config is required for filter group""" if rule_type == GroupType.KEYWORD: self.__filters = [ # ValueAllowlistCheck(), # ValueArrayDictionaryCheck(), # ValueBlocklistCheck(), # ValueCamelCaseCheck(), # ValueFilePathCheck(), # ValueHexNumberCheck(), # ValueLastWordCheck(), # ValueMethodCheck(), # ValueSimilarityCheck(), # ValueStringTypeCheck(check_for_literals=config.check_for_literals), # ValueTokenCheck(), # ] if not config.doc: self.__filters.extend([ValuePatternCheck(), ValueNotAllowedPatternCheck()]) elif rule_type == GroupType.PATTERN: self.__filters = [ # LineSpecificKeyCheck(), # ValuePatternCheck(), # ] else: # GroupType.DEFAULT self.__filters = [] @property def filters(self) -> List[Filter]: """property getter""" return self.__filters @filters.setter def filters(self, filters: List[Filter]) -> None: """property setter""" self.__filters = filters ================================================ FILE: credsweeper/filters/group/password_keyword.py ================================================ from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters import ValueLengthCheck, LineGitBinaryCheck, ValueSealedSecretCheck from credsweeper.filters import ValueSplitKeywordCheck from credsweeper.filters.group.group import Group from credsweeper.filters.line_uue_part_check import LineUUEPartCheck class PasswordKeyword(Group): """PasswordKeyword""" def __init__(self, config: Config) -> None: super().__init__(config, GroupType.KEYWORD) self.filters.extend([ ValueLengthCheck(max_len=config.max_password_value_length), ValueSplitKeywordCheck(), ValueSealedSecretCheck(), LineGitBinaryCheck(), LineUUEPartCheck() ]) ================================================ FILE: credsweeper/filters/group/token_pattern.py ================================================ from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters import ValueMorphemesCheck, ValueCamelCaseCheck, ValueNumberCheck, ValuePatternCheck from credsweeper.filters.group.group import Group class TokenPattern(Group): """Token Pattern""" def __init__(self, config: Config) -> None: super().__init__(config, GroupType.DEFAULT) self.filters = [ ValueMorphemesCheck(), ValueNumberCheck(), ValueCamelCaseCheck(), ValuePatternCheck(), ] ================================================ FILE: credsweeper/filters/group/url_credentials_group.py ================================================ from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters import (ValueAllowlistCheck, ValueArrayDictionaryCheck, ValueBlocklistCheck, ValueCamelCaseCheck, ValueLengthCheck, ValueFilePathCheck, ValueLastWordCheck, ValueMethodCheck, ValueNotAllowedPatternCheck, ValuePatternCheck, ValueStringTypeCheck, ValueTokenCheck) from credsweeper.filters.group.group import Group class UrlCredentialsGroup(Group): """UrlCredentialsGroup""" def __init__(self, config: Config) -> None: """URL credentials group class. Similar to PasswordKeyword, but exclude all checks dependent on the variable name, as URL credentials have no explicitly defined variable """ super().__init__(config, GroupType.DEFAULT) self.filters = [ ValueAllowlistCheck(), ValueArrayDictionaryCheck(), ValueBlocklistCheck(), ValueCamelCaseCheck(), ValueFilePathCheck(), ValueLastWordCheck(), ValueMethodCheck(), ValueStringTypeCheck(check_for_literals=config.check_for_literals), ValueNotAllowedPatternCheck(), ValueTokenCheck(), ValueLengthCheck(max_len=config.max_url_cred_value_length), ValuePatternCheck() ] ================================================ FILE: credsweeper/filters/group/weird_base36_token.py ================================================ from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters import ValueMorphemesCheck, ValuePatternCheck, ValueNumberCheck, ValueEntropyBase36Check, \ ValueTokenBase36Check from credsweeper.filters.group.group import Group class WeirdBase36Token(Group): """Structured Token""" def __init__(self, config: Config) -> None: super().__init__(config, GroupType.DEFAULT) self.filters = [ ValueMorphemesCheck(threshold=1), ValuePatternCheck(), ValueNumberCheck(), ValueTokenBase36Check(), ValueEntropyBase36Check(), ] ================================================ FILE: credsweeper/filters/group/weird_base64_token.py ================================================ from credsweeper.common.constants import GroupType from credsweeper.config.config import Config from credsweeper.filters import ValueMorphemesCheck, ValueNotPartEncodedCheck, \ ValueBase64DataCheck, ValueEntropyBase64Check, ValuePatternCheck, ValueNumberCheck, ValueTokenBase64Check, \ ValueBase64PartCheck from credsweeper.filters.group.group import Group class WeirdBase64Token(Group): """Structured Token""" def __init__(self, config: Config) -> None: super().__init__(config, GroupType.DEFAULT) self.filters = [ ValueMorphemesCheck(threshold=1), ValueNumberCheck(), ValueBase64DataCheck(), ValueTokenBase64Check(), ValueEntropyBase64Check(), ValuePatternCheck(), ValueNotPartEncodedCheck(), ValueBase64PartCheck(), ] ================================================ FILE: credsweeper/filters/line_git_binary_check.py ================================================ import base64 import contextlib import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class LineGitBinaryCheck(Filter): """Checks that line is not a part of git binary patch""" base85string = re.compile(r"^[A-Za-z][0-9A-Za-z!#$%&()*+;<=>?@^_`{|}~-]{6,65}$") def __init__(self, config: Optional[Config] = None) -> None: pass 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 not line_data.line: return True if 66 < target.line_strip_len: return False line = target.line_strip len_line = len(line) # https://github.com/git/git/blob/master/base85.c if 6 <= len_line and 0 == ((len_line - 1) % 5) and LineGitBinaryCheck.base85string.match(line): size = ord(line[0]) if 65 <= size <= 90: # A-Z size -= 64 elif 97 <= size <= 122: # a-z size -= 70 else: return False with contextlib.suppress(Exception): decoded = base64.b85decode(line[1:]) return len(decoded) == size return False ================================================ FILE: credsweeper/filters/line_specific_key_check.py ================================================ import re from typing import Optional from credsweeper.common.constants import ML_HUNK from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class LineSpecificKeyCheck(Filter): """Check that values from list below is not in candidate line.""" NOT_ALLOWED = [r"example", r"\benc[\(\[]", r"\btrue\b", r"\bfalse\b"] NOT_ALLOWED_PATTERN = re.compile(Util.get_regex_combine_or(NOT_ALLOWED), re.IGNORECASE) def __init__(self, config: Optional[Config] = None) -> None: pass 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 line_data.line is None: return True if 0 <= line_data.variable_start: # variable may be defined too sub_line_start = 0 if ML_HUNK >= line_data.variable_start else line_data.variable_start - ML_HUNK else: sub_line_start = 0 if ML_HUNK >= line_data.value_start else line_data.value_start - ML_HUNK if self.NOT_ALLOWED_PATTERN.search(line_data.line, sub_line_start, line_data.value_end + ML_HUNK): return True return False ================================================ FILE: credsweeper/filters/line_uue_part_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class LineUUEPartCheck(Filter): """Checks that line is not a part of UU encoding only for maximal line""" uue_string = re.compile(r"^M[!-`]{60}$") def __init__(self, config: Optional[Config] = None) -> None: pass 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 not line_data.line: return True if 61 != target.line_len: return False line = target.line if LineUUEPartCheck.uue_string.match(line): # to be sure - check two lines: before and/or after if 0 < line_data.line_pos: previous_line = target.lines[line_data.line_pos - 1] if LineUUEPartCheck.uue_string.match(previous_line): return True if len(target.lines) > 1 + line_data.line_pos: next_line = target.lines[line_data.line_pos + 1] if LineUUEPartCheck.uue_string.match(next_line): return True return False ================================================ FILE: credsweeper/filters/value_allowlist_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueAllowlistCheck(Filter): """Check that the patterns do not MATCH the candidate value.""" ALLOWED = [ r"ENC\(.*\)", # r"ENC\[.*\]", # r"\$\{(\*|[0-9]+|[a-z_].*)\}", # r"\$[0-9]+(\s|$)", # r"\$\$[a-z_]+(\^%[0-9a-z_]+)?", # r"#\{.+\}", # Ruby: String Interpolation r"\{\{.+\}\}", # r".*@@@hl@@@(암호|비번|PW|PASS)@@@endhl@@@", # ] ALLOWED_PATTERN = re.compile(Util.get_regex_combine_or(ALLOWED), flags=re.IGNORECASE) ALLOWED_QUOTED = [ r"\$[a-z_][0-9a-z_]+((::|->|\.)[a-z_]|\[|$)", # r"\$\([^)]+\)", # r".*\*\*\*", # ] ALLOWED_QUOTED_PATTERN = re.compile(Util.get_regex_combine_or(ALLOWED_QUOTED), flags=re.IGNORECASE) ALLOWED_UNQUOTED = [ r"[~a-z0-9_]+((\.|->)[a-z0-9_]+)+\(.*$", # r"\$[a-z_][0-9a-z_]+((::|->|\.)[a-z_]|\[|$)", # r"\$\([.0-9a-z_-]+", # r".*\*\*\*\*\*", # ] ALLOWED_UNQUOTED_PATTERN = re.compile(Util.get_regex_combine_or(ALLOWED_UNQUOTED), flags=re.IGNORECASE) def __init__(self, config: Optional[Config] = None) -> None: pass 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 line_data.is_well_quoted_value: if self.ALLOWED_PATTERN.match(line_data.value) or self.ALLOWED_QUOTED_PATTERN.match(line_data.value): return True else: value = line_data.wrap + line_data.value if line_data.wrap else line_data.value if self.ALLOWED_PATTERN.match(value) or self.ALLOWED_UNQUOTED_PATTERN.match(value): return True return False ================================================ FILE: credsweeper/filters/value_array_dictionary_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueArrayDictionaryCheck(Filter): """Match call to dictionary or array element. This filter checks only calls, not declarations: `token = values[i]` would be filtered `token = {'root'}` would be kept """ PATTERN = re.compile(r"\[['\"]?[^,]+['\"]?]") def __init__(self, config: Optional[Config] = None) -> None: pass 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 line_data.is_well_quoted_value: return False # not well quoted value if line_data.wrap and "byte" in line_data.wrap.lower(): return False if self.PATTERN.search(line_data.value): return True if line_data.wrap and (line_data.wrap.endswith('[') or line_data.wrap.endswith('(')): return True return False ================================================ FILE: credsweeper/filters/value_atlassian_token_check.py ================================================ import binascii import contextlib from typing import Optional from credsweeper.common.constants import LATIN_1, ASCII from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueAtlassianTokenCheck(Filter): """Check that candidate have a known structure""" def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. 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 """ value = line_data.value with contextlib.suppress(Exception): # atlassian integer:bytes from base64 if value.startswith("BBDC-"): # Bitbucket HTTP Access Token return ValueAtlassianTokenCheck.check_atlassian_struct(value[5:]) if value.startswith("AT"): # Bitbucket App password while "\\=" in value or "%3d" in value or "%3D" in value: # = sign may be escaped in URL https://www.rfc-editor.org/rfc/rfc3986 value = value.replace('\\', '') value = value.replace('%3d', '=') value = value.replace('%3D', '=') return ValueAtlassianTokenCheck.check_crc32_struct(value) # Jira / Confluence PAT token return ValueAtlassianTokenCheck.check_atlassian_struct(value) return True @staticmethod def check_crc32_struct(value: str) -> bool: """Returns False if value is valid for bitbucket app password structure 'payload:crc32'""" crc32 = int(value[-8:], 16) data = value[:-8].encode(ASCII) data_crc32 = binascii.crc32(data) if crc32 == data_crc32: return False return True @staticmethod def check_atlassian_struct(value: str) -> bool: """Returns False if value is valid for atlassian structure 'integer:bytes'""" decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True) delimiter_pos = decoded.find(b':') # there is limit for big integer value: math.log10(1<<64) = 19.265919722494797 if 0 < delimiter_pos <= 20: val = decoded[:delimiter_pos].decode(LATIN_1) # at least 4 digits in the token if 1000 <= int(val): # test for ascii and Shannon entropy - there should be random data data = decoded[delimiter_pos + 1:] return Util.is_ascii_entropy_validate(data) return True ================================================ FILE: credsweeper/filters/value_azure_token_check.py ================================================ import contextlib import json from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check from credsweeper.utils.util import Util class ValueAzureTokenCheck(Filter): """ Azure tokens contains header, payload and signature https://learn.microsoft.com/en-us/azure/active-directory-b2c/access-tokens """ def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ with contextlib.suppress(Exception): parts = line_data.value.split('.') if 3 != len(parts): return True hdr = Util.decode_base64(parts[0], padding_safe=True, urlsafe_detect=True) header = json.loads(hdr) if not ("alg" in header and "typ" in header and "kid" in header): # must be all parts in header return True pld = Util.decode_base64(parts[1], padding_safe=True, urlsafe_detect=True) payload = json.loads(pld) if not ("iss" in payload and "exp" in payload and "iat" in payload): # must be all parts in payload return True min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(parts[2])) entropy = Util.get_shannon_entropy(parts[2]) # good signature has to be like random bytes return entropy < min_entropy return True ================================================ FILE: credsweeper/filters/value_base32_data_check.py ================================================ import base64 import contextlib import string from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueBase32DataCheck(Filter): """ Check that candidate is NOT an ascii encoded string with entropy check """ def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received weird base32 token which must be a random string Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ value = line_data.value # check whether digits and upper cases present for string_set in [string.digits, string.ascii_uppercase]: for digit in string_set: if digit in value: break else: return True # check whether decoded bytes have enough entropy with contextlib.suppress(Exception): if pad_remain := len(value) % 8: value += '=' * (8 - pad_remain) decoded = base64.b32decode(value) return Util.is_ascii_entropy_validate(decoded) return True ================================================ FILE: credsweeper/filters/value_base64_data_check.py ================================================ import contextlib import string from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueBase64DataCheck(Filter): """ Check that candidate is NOT an ascii encoded string with entropy check """ def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received weird base64 token which must be a random string Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ value = line_data.value # check whether digits, lower and upper cases present for string_set in [string.digits, string.ascii_lowercase, string.ascii_uppercase]: for digit in string_set: if digit in value: break else: return True # check whether decoded bytes have enough entropy with contextlib.suppress(Exception): decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True) return Util.is_ascii_entropy_validate(decoded) return True ================================================ FILE: credsweeper/filters/value_base64_encoded_pem_check.py ================================================ import logging from typing import Optional from credsweeper.common.constants import ASCII, PEM_BEGIN_PATTERN, MAX_LINE_LENGTH, PEM_END_PATTERN from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.pem_key_detector import PemKeyDetector from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class ValueBase64EncodedPem(Filter): """Check that candidate contains base64 encoded pem private key""" def __init__(self, config: Optional[Config] = None) -> None: self.config = config def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. 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 """ try: text = Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True).decode(ASCII) pem_text = '' pem_end_found = False for line in text.splitlines(): if pem_text: pem_text += f"\n{line}" if PEM_END_PATTERN in line: pem_end_found = True else: if PEM_BEGIN_PATTERN in line: if PemKeyDetector.RE_PEM_BEGIN.search(line, 0, MAX_LINE_LENGTH): pem_text = line if PEM_END_PATTERN in line: pem_end_found = True if pem_end_found: new_target = AnalysisTarget(0, [pem_text], [1], target.descriptor) first_line = LineData(self.config, pem_text, 0, 1, target.file_path, target.file_type, target.info, PemKeyDetector.RE_PEM_BEGIN) if PemKeyDetector(self.config).detect_pem_key(first_line, new_target): # obtained candidates are not used because not match text return False # drop the candidate and continue search pem_text = '' pem_end_found = False except Exception as exc: logger.warning(exc) return True ================================================ FILE: credsweeper/filters/value_base64_key_check.py ================================================ import contextlib from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueBase64KeyCheck(Filter): """Check that candidate contains base64 encoded private key""" EXTRA_TRANS_TABLE = str.maketrans('', '', "\",'\\") def __init__(self, config: Optional[Config] = None) -> None: self.config = config def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. 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 """ with contextlib.suppress(Exception): # remove backslash escaping sequences text = Util.PEM_CLEANING_PATTERN.sub(r'', line_data.value) # remove whitespaces text = text.translate(Util.WHITESPACE_TRANS_TABLE) # clean sequence concatenation case: text = text.replace("'+'", '') text = text.replace('"+"', '') # possibly url based escaping: text = text.replace('%2B', '+') text = text.replace('%2F', '/') text = text.replace('%3D', '=') # clean any other chars which should not appear text = text.translate(ValueBase64KeyCheck.EXTRA_TRANS_TABLE) # only PEM standard encoding supported in regex pattern to cut off ending of the key key = Util.decode_base64(text, padding_safe=True, urlsafe_detect=False) private_key = Util.load_pk(key, password=None) if Util.check_pk(private_key): return False return True ================================================ FILE: credsweeper/filters/value_base64_part_check.py ================================================ import contextlib import re import statistics from itertools import takewhile from typing import Optional from credsweeper.common.constants import Chars from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check from credsweeper.utils.util import Util class ValueBase64PartCheck(Filter): """ Check that candidate is NOT a part of base64 long line """ base64_pattern = re.compile(r"^(\\{1,8}[0abfnrtv]|[0-9A-Za-z+/=]){1,4000}$") base64_char_set = set(Chars.BASE64STDPAD_CHARS.value + '\\') def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received weird base64 token which must be a random string Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ with contextlib.suppress(Exception): line = line_data.line len_line = len(line) value = line_data.value len_value = len(value) if 0 == line_data.value_start and len_line >= 2 * len_value \ or 0 < line_data.value_start and line[line_data.value_start - 1] in ('/', '+', '\\', '%') \ or 0 < line_data.value_end < len_line and line[line_data.value_end] in ('/', '+', '\\', '%'): if '-' in value or '_' in value: # the value contains url-safe chars, so '/' or '+' is a delimiter return False left_start = line_data.value_start - len_value if 0 > left_start: left_start = 0 right_end = line_data.value_end + len_value if len_line < right_end: right_end = len_line hunk_size = right_end - left_start if hunk_size == 3 * len_value: # simple analysis for maximal data size if self.base64_pattern.match(line[left_start:right_end]): # obvious case: all characters are base64 standard return True elif right_end - left_start >= 2 * len_value: # simple analysis for data too large to yield sensible insights part_set = set(line[left_start:right_end]) if not part_set.difference(ValueBase64PartCheck.base64_char_set): # obvious case: all characters are base64 standard return True left_part = ''.join( takewhile(lambda x: x in ValueBase64PartCheck.base64_char_set, reversed(line[left_start:line_data.value_start]))) right_part = ''.join( takewhile(lambda x: x in ValueBase64PartCheck.base64_char_set, line[line_data.value_end:right_end])) min_entropy_value = ValueEntropyBase64Check.get_min_data_entropy(len_value) left_entropy = Util.get_shannon_entropy(left_part) value_entropy = Util.get_shannon_entropy(value) right_entropy = Util.get_shannon_entropy(right_part) common = left_part + value + right_part common_entropy = Util.get_shannon_entropy(common) min_entropy_common = ValueEntropyBase64Check.get_min_data_entropy(len(common)) if min_entropy_common < common_entropy: return True if left_entropy and right_entropy: data = [left_entropy, value_entropy, right_entropy, min_entropy_value, common_entropy] elif left_entropy and not right_entropy: data = [left_entropy, value_entropy, min_entropy_value, min_entropy_value, common_entropy] elif not left_entropy and right_entropy: data = [value_entropy, right_entropy, min_entropy_value, min_entropy_value, common_entropy] else: return False avg = statistics.mean(data) stdev = statistics.stdev(data, avg) avg_min = avg - 1.1 * stdev if (0. == left_entropy or avg_min < left_entropy or left_entropy < value_entropy < right_entropy) \ and ( 0. == right_entropy or avg_min < right_entropy or right_entropy < value_entropy < left_entropy): # high entropy of bound parts looks like a part of base64 long line return True return False return False ================================================ FILE: credsweeper/filters/value_basic_auth_check.py ================================================ import contextlib from typing import Optional from credsweeper.common.constants import DEFAULT_PATTERN_LEN, UTF_8 from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueBasicAuthCheck(Filter): """Check that candidate have a known structure""" def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. 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 """ value = line_data.value with contextlib.suppress(Exception): # Basic encoding -> login:password decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True) delimiter_pos = decoded.find(b':') # check whether the delimiter exists and all chars are decoded if 0 < delimiter_pos < len(decoded) - DEFAULT_PATTERN_LEN and decoded.decode(UTF_8): return False return True ================================================ FILE: credsweeper/filters/value_blocklist_check.py ================================================ from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueBlocklistCheck(Filter): """Check that words from block list is lest that 70% of candidate value length.""" NOT_ALLOWED = [ "true", "false", "null", "none", "bearer", "string", "value", "undefined", "uuid", ] def __init__(self, config: Optional[Config] = None) -> None: pass 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 """ value = line_data.value.lower() for not_allowed in self.NOT_ALLOWED: if not_allowed in value and len(not_allowed) / len(value) >= 0.7: return True return False ================================================ FILE: credsweeper/filters/value_camel_case_check.py ================================================ import re from typing import Optional from credsweeper.common import static_keyword_checklist from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueCamelCaseCheck(Filter): """Check that candidate is not written in camel case.""" CAMEL_CASE = ["[a-z]+([A-Z][a-z]+)+", "[A-Z][a-z]+([A-Z][a-z]+)+"] CAMEL_CASE_PATTERN = re.compile(Util.get_regex_combine_or(CAMEL_CASE)) def __init__(self, config: Optional[Config] = None) -> None: pass 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 line_data.is_well_quoted_value: return False if self.CAMEL_CASE_PATTERN.fullmatch(line_data.value): return static_keyword_checklist.check_morphemes(line_data.value.lower(), 1) return False ================================================ FILE: credsweeper/filters/value_dictionary_keyword_check.py ================================================ from typing import Optional from credsweeper.common import static_keyword_checklist from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueDictionaryKeywordCheck(Filter): """Check that no word from dictionary present in the candidate value.""" def __init__(self, config: Optional[Config] = None) -> None: pass 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 """ line_data_value_lower = line_data.value.lower() for keyword in static_keyword_checklist.keyword_list: if keyword in line_data_value_lower: line_data_value_lower = line_data_value_lower.replace(keyword, '\x7F' * len(keyword)) ratio = line_data_value_lower.count('\x7F') / len(line_data_value_lower) if 0.33 < ratio: return True return False ================================================ FILE: credsweeper/filters/value_discord_bot_check.py ================================================ import contextlib from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check from credsweeper.utils.util import Util class ValueDiscordBotCheck(Filter): """Discord bot Token""" def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ with contextlib.suppress(Exception): # . must be in value according regex dot_separator_index = line_data.value.index('.') id_part = line_data.value[:dot_separator_index] discord_id = int(Util.decode_base64(id_part, padding_safe=True, urlsafe_detect=True)) entropy_part = line_data.value[dot_separator_index:] entropy = Util.get_shannon_entropy(entropy_part) min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(entropy_part)) if 1000 <= discord_id and min_entropy <= entropy: return False return True ================================================ FILE: credsweeper/filters/value_entropy_base32_check.py ================================================ import math from functools import cache from credsweeper.filters.value_entropy_base_check import ValueEntropyBaseCheck class ValueEntropyBase32Check(ValueEntropyBaseCheck): """Base32 entropy check""" @staticmethod @cache def get_min_data_entropy(x: int) -> float: """Returns average entropy for size of random data. Precalculated data is applied for speedup""" if 8 <= x < 17: y = 0.80569236 * math.log2(x) + 0.13439734 elif 17 <= x < 33: y = 0.66350481 * math.log2(x) + 0.71143862 elif 33 <= x: y = 4.04 else: y = 0 return y ================================================ FILE: credsweeper/filters/value_entropy_base36_check.py ================================================ import math from functools import cache from credsweeper.filters.value_entropy_base_check import ValueEntropyBaseCheck class ValueEntropyBase36Check(ValueEntropyBaseCheck): """Base36 entropy check""" @staticmethod @cache def get_min_data_entropy(x: int) -> float: """Returns minimal entropy for size of random data. Precalculated data is applied for speedup""" if 15 == x: # workaround for Dropbox App secret y = 3.374 elif 10 <= x < 26: y = 0.731566857 * math.log2(x) + 0.474132 elif 26 <= x: y = 3.9 else: y = 0 return y ================================================ FILE: credsweeper/filters/value_entropy_base64_check.py ================================================ import math from functools import cache from credsweeper.filters.value_entropy_base_check import ValueEntropyBaseCheck class ValueEntropyBase64Check(ValueEntropyBaseCheck): """Base64 entropy check""" @staticmethod @cache def get_min_data_entropy(x: int) -> float: """Returns minimal average entropy for size of random data. Precalculated round data is applied for speedup""" if 12 <= x < 18: y = 0.915 * math.log2(x) - 0.047 elif 18 <= x < 35: y = 0.767 * math.log2(x) + 0.5677 elif 35 <= x < 65: y = 0.944 * math.log2(x) - 0.009 * x - 0.04 elif 65 <= x < 256: y = 0.621 * math.log2(x) - 0.003 * x + 1.54 elif 256 <= x: y = 6 - 64 / x else: y = 0 return y ================================================ FILE: credsweeper/filters/value_entropy_base_check.py ================================================ from abc import abstractmethod from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueEntropyBaseCheck(Filter): """Check that candidate value has minimal Shanon Entropy for appropriated base""" def __init__(self, config: Optional[Config] = None) -> None: pass @staticmethod @abstractmethod def get_min_data_entropy(x: int) -> float: """Returns minimal entropy for size of data""" raise NotImplementedError() 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, when need to filter candidate and False if left """ entropy = Util.get_shannon_entropy(line_data.value) min_entropy = self.get_min_data_entropy(len(line_data.value)) if min_entropy > entropy or 0 == min_entropy: return True return False ================================================ FILE: credsweeper/filters/value_file_path_check.py ================================================ from typing import Optional from credsweeper.common import static_keyword_checklist from credsweeper.common.constants import Chars from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check from credsweeper.utils.util import Util class ValueFilePathCheck(Filter): """Check that candidate value is a path or not. Check if a value contains either '/' or ':\' separators (but not both) and do not have any special characters ( !$@`&*()+) """ base64stdpad_possible_set = set(Chars.BASE64STDPAD_CHARS.value) unusual_windows_symbols_in_path = "\t\n\r!$@`&*(){}<>+=;,~^" unusual_linux_symbols_in_path = "\t\n\r!@`&*<>+=;,~^:\\" def __init__(self, config: Optional[Config] = None) -> None: pass 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 """ value = line_data.value bit_length = len(value).bit_length() morpheme_threshold = 1 if 6 > bit_length else bit_length - 4 contains_unix_separator = '/' in value if contains_unix_separator: if ("://" in value # or value.startswith("~/") # or value.startswith("./") # or "../" in value # or "/.." in value # or value.startswith("//") and ':' == line_data.separator): # common case for url definition or aliases # or _keyword_://example.com where : is the separator return static_keyword_checklist.check_morphemes(value.lower(), morpheme_threshold) # base64 encoded data might look like linux path min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(value)) # get minimal entropy to compare with shannon entropy of found value # min_entropy == 0 means that the value cannot be checked with the entropy due high variance for i in value: if i not in self.base64stdpad_possible_set: # value contains wrong BASE64STDPAD_CHARS symbols like -_. break else: # all symbols are from base64 alphabet entropy = Util.get_shannon_entropy(value) if 0 == min_entropy or min_entropy > entropy: contains_unix_separator = 1 < value.count('/') else: # high entropy means base64 encoded data contains_unix_separator = False # low shannon entropy points that the value maybe not a high randomized value in base64 contains_windows_separator = ':\\' in value if contains_unix_separator or contains_windows_separator: unusual_symbols_in_path = self.unusual_linux_symbols_in_path if contains_unix_separator \ else self.unusual_windows_symbols_in_path for i in unusual_symbols_in_path: if i in value: # the symbols which not passed in a path usually break else: if contains_unix_separator ^ contains_windows_separator: return static_keyword_checklist.check_morphemes(value.lower(), morpheme_threshold) return False ================================================ FILE: credsweeper/filters/value_github_check.py ================================================ import binascii import contextlib from typing import Optional import base62 from credsweeper.common.constants import ASCII from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueGitHubCheck(Filter): """NPM or GitHub Classic Token validation""" def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ # https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/ # https://github.blog/security/announcing-npms-new-access-token-format/ with contextlib.suppress(Exception): if (line_data.value.startswith("gh") and '_' == line_data.value[3]) or line_data.value.startswith("npm_"): token = line_data.value[4:-6] data = token.encode(ASCII, errors="strict") crc32sum = binascii.crc32(data) base62_crc32 = line_data.value[-6:] sign_b = base62.decodebytes(base62_crc32) crc32sign = int.from_bytes(sign_b, "big") if crc32sign == crc32sum: return False return True ================================================ FILE: credsweeper/filters/value_grafana_check.py ================================================ import contextlib import json from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueGrafanaCheck(Filter): """Grafana Provisioned API Key and Access Policy Token""" def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ with contextlib.suppress(Exception): if line_data.value.startswith("glc_"): # Grafana Access Policy Token decoded = Util.decode_base64(line_data.value[4:], padding_safe=True, urlsafe_detect=True) keys = ["o", "n", "k", "m"] else: # Grafana Provisioned API Key decoded = Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True) keys = ["n", "k", "id"] if payload := json.loads(decoded): for key in keys: if key not in payload: return True return False return True ================================================ FILE: credsweeper/filters/value_grafana_service_check.py ================================================ import binascii import contextlib import struct from typing import Optional from credsweeper.common.constants import ASCII from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueGrafanaServiceCheck(Filter): """Check that candidate have a known structure""" def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. 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 """ with contextlib.suppress(Exception): checksum = struct.unpack(" None: pass 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 """ value = line_data.value.lower() if ValueHexNumberCheck.HEX_08_64_VALUE_REGEX.match(value): return True return False ================================================ FILE: credsweeper/filters/value_jfrog_token_check.py ================================================ import contextlib import re from typing import Optional import base58 from credsweeper.common.constants import ASCII from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueJfrogTokenCheck(Filter): """Check that candidate have a known structure JFROG token""" def __init__(self, config: Optional[Config] = None) -> None: # reftkn:01:0123456789:abcdefGhijklmnoPqrstuVwxyz0 self._pattern = re.compile(r"reftkn:\d+:\d+:[\w_/+-]+") def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. 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 """ value = line_data.value with contextlib.suppress(Exception): if value.startswith("cmVmdGtuO"): decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True) if self._pattern.match(decoded.decode(ASCII)): # identity token return False if value.startswith("AKCp"): decoded = base58.b58decode(value) # the check only for correct size decoding if 54 == len(decoded): # API key (deprecated) - a good integrity check solution was not found return False return True ================================================ FILE: credsweeper/filters/value_json_web_key_check.py ================================================ import contextlib from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueJsonWebKeyCheck(Filter): """ Check that candidate is JWK which starts usually from 'e' and have private parts of the key https://datatracker.ietf.org/doc/html/rfc7517 https://datatracker.ietf.org/doc/html/rfc7518 """ def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received key which might be structured. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ with contextlib.suppress(Exception): if data := Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True): if b'"kty":' in data and (b'"oct"' in data and b'"k":' in data or (b'"EC"' in data or b'"RSA"' in data) and b'"d":' in data): return False return True ================================================ FILE: credsweeper/filters/value_json_web_token_check.py ================================================ import contextlib import json from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueJsonWebTokenCheck(Filter): """ Check that candidate is JWT which starts usually from 'eyJ' registered keys are checked to be in the JWT parts https://www.iana.org/assignments/jose/jose.xhtml """ header_keys = { "kid", "x5u", "x5t", "x5t#S256", "typ", "cty", "crit", "alg", "enc", "zip", "jku", "jwk", "x5c", "epk", "apu", "apv", "iv", "tag", "p2s", "p2c", "iss", "sub", "aud", "b64", "ppt", "url", "nonce", "svt" } payload_keys = { "iss", "sub", "aud", "exp", "nbf", "iat", "jti", "kty", "use", "key_ops", "alg", "enc", "zip", "jku", "jwk", "kid", "x5u", "x5c", "x5t", "x5t#S256", "x", "y", "d", "n", "e", "p", "q", "dp", "dq", "qi", "oth", "k", "crv", "ext", "crit", "keys", "id", "role", "token", "secret", "password", "nonce" } def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received token which might be structured. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ header_check = False payload_check = False signature_check = False with contextlib.suppress(Exception): jwt_parts = line_data.value.split('.') for part in jwt_parts: data = Util.decode_base64(part, padding_safe=True, urlsafe_detect=True) if part.startswith("eyJ"): # open part - just base64 encoded json_keys = json.loads(data).keys() # header will be checked first if not header_check: header_check = bool(ValueJsonWebTokenCheck.header_keys.intersection(json_keys)) # payload follows the header elif not payload_check: payload_check = bool(ValueJsonWebTokenCheck.payload_keys.intersection(json_keys)) # any other payloads are allowed elif header_check and payload_check and not signature_check: # signature check or skip encrypted part signature_check = not Util.is_ascii_entropy_validate(data) else: break if header_check and payload_check and signature_check: return False return True ================================================ FILE: credsweeper/filters/value_last_word_check.py ================================================ from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueLastWordCheck(Filter): """Check that secret is not short value that ends with `:`.""" def __init__(self, config: Optional[Config] = None) -> None: pass 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 16 > len(line_data.value) and not line_data.is_well_quoted_value and line_data.value.endswith(':'): return True return False ================================================ FILE: credsweeper/filters/value_length_check.py ================================================ from typing import Optional from credsweeper.common.constants import MIN_VALUE_LENGTH, MAX_LINE_LENGTH from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueLengthCheck(Filter): """Check that candidate value length is between MIN and MAX.""" def __init__(self, config: Optional[Config] = None, min_len: int = MIN_VALUE_LENGTH, max_len: int = MAX_LINE_LENGTH) -> None: self.min_len = min_len self.max_len = max_len 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.min_len <= len(line_data.value) <= self.max_len: return False return True ================================================ FILE: credsweeper/filters/value_method_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueMethodCheck(Filter): """Check if potential candidate value is a function. Check if potential candidate value is a function by looking for '(', ')' or 'function' sub-strings in it """ PATTERN = re.compile(r"^[~.\->:0-9A-Za-z_]+\(.*\)") def __init__(self, config: Optional[Config] = None) -> None: pass 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 line_data.is_well_quoted_value: return False if "function" in line_data.value or self.PATTERN.search(line_data.value): return True return False ================================================ FILE: credsweeper/filters/value_morphemes_check.py ================================================ from typing import Optional from credsweeper.common import static_keyword_checklist from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueMorphemesCheck(Filter): """Check value for a threshold of morphemes count""" THRESHOLDS_X3 = int(MAX_LINE_LENGTH).bit_length() # one morpheme is very likely to be random generated even for 3 symbols MAX_MORPHEMES_LIMIT = max(1, THRESHOLDS_X3 - 4) def __init__(self, config: Optional[Config] = None, threshold: Optional[int] = None) -> None: # threshold - minimum morphemes number in a value if threshold is None: # use dynamic thresholds self.thresholds = [max(1, x - 4) for x in range(ValueMorphemesCheck.THRESHOLDS_X3)] elif isinstance(threshold, int) and 0 <= threshold: # constant thresholds for any pattern self.thresholds = [threshold] * ValueMorphemesCheck.THRESHOLDS_X3 else: raise ValueError(f"Wrong type of pattern length {type(threshold)} = {repr(threshold)}") 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 """ threshold_id = len(line_data.value).bit_length() # use the last (max) threshold in very huge value threshold = self.thresholds[threshold_id] if len(self.thresholds) > threshold_id else self.thresholds[-1] return static_keyword_checklist.check_morphemes(line_data.value.lower(), threshold) ================================================ FILE: credsweeper/filters/value_not_allowed_pattern_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.util import Util class ValueNotAllowedPatternCheck(Filter): """Check that secret doesn't open or closes brackets or a new line.""" NOT_ALLOWED = [r"[<>\[\]{}]\s+", r"\\u00(26|3c)gt;?(\s|\\+[nrt])?", r"^\s*\\", r"^\s*\\n\s*"] NOT_ALLOWED_PATTERN = re.compile( # f"{Util.get_regex_combine_or(NOT_ALLOWED)}$", # flags=re.IGNORECASE) def __init__(self, config: Optional[Config] = None) -> None: pass 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 not line_data.is_well_quoted_value and self.NOT_ALLOWED_PATTERN.search(line_data.value): return True return False ================================================ FILE: credsweeper/filters/value_not_part_encoded_check.py ================================================ import re from typing import Optional from credsweeper.common import static_keyword_checklist from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueNotPartEncodedCheck(Filter): """Check that token is not a part of encoded data.""" BASE64_ENCODED_DATA_PATTERN_BEFORE = re.compile( r"(^|[^A-Za-z0-9]+)(?P(([A-Za-z0-9_-]{4}){16,64})|(([A-Za-z0-9+/]{4}){16,64}))([^=A-Za-z0-9+/|_-]+|$)") BASE64_ENCODED_DATA_PATTERN_AFTER = re.compile( r"(^|[^A-Za-z0-9]+)(?P(([A-Za-z0-9=_-]{4}){4,64})|(([A-Za-z0-9=+/]{4}){4,64}))([^=A-Za-z0-9+/|_-]+|$)") def __init__(self, config: Optional[Config] = None) -> None: pass @staticmethod def check_line_target_fit(line_data: LineData, target: AnalysisTarget) -> bool: """Verifies whether line data fit to be a part of many lines""" return line_data.line_num == target.line_num \ and len(line_data.line) == target.line_len \ and line_data.line == target.line \ and 0 < target.line_num <= target.lines_len \ and line_data.line == target.lines[target.line_num - 1] @staticmethod def check_val(line: str, pattern: re.Pattern) -> Optional[bool]: """Verifies whether the line looks like a base64 pattern""" if match_obj := pattern.match(line): val = match_obj.group("val") # not a path-like if not val.startswith('/') \ or not static_keyword_checklist.check_morphemes(val.lower(), 2) \ or '=' == val[-1]: # padding char is a marker too return True return None 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 ValueNotPartEncodedCheck.check_line_target_fit(line_data, target): # suppose, there is plain lines order if 1 < target.line_num: result = ValueNotPartEncodedCheck.check_val(target.lines[line_data.line_num - 2], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_BEFORE) if result is not None: return result if target.lines_len > target.line_num: result = ValueNotPartEncodedCheck.check_val(target.lines[line_data.line_num], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_AFTER) if result is not None: return result else: # otherwise - need to iterate for all lines for i in range(target.lines_len): if line_data.line == target.lines[i]: if 0 < i: result = ValueNotPartEncodedCheck.check_val( target.lines[i - 1], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_BEFORE) if result is not None: return result i += 1 if target.lines_len > i: result = ValueNotPartEncodedCheck.check_val( target.lines[i], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_AFTER) if result is not None: return result break return False ================================================ FILE: credsweeper/filters/value_number_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueNumberCheck(Filter): """Check value if it a value in hex or decimal representation""" HEX_VALUE_REGEX = re.compile("^(0x)?[0-9a-f]{1,128}[ul]{0,3}$") DEC_VALUE_REGEX = re.compile("^-?[0-9]{1,20}[ul]{0,3}$") def __init__(self, config: Optional[Config] = None) -> None: pass 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 """ value = line_data.value.lower() if 22 > len(value) and ValueNumberCheck.HEX_VALUE_REGEX.match(value): return True if ValueNumberCheck.DEC_VALUE_REGEX.match(value): return True return False ================================================ FILE: credsweeper/filters/value_pattern_check.py ================================================ import re from typing import Optional from credsweeper.common.constants import DEFAULT_PATTERN_LEN, MAX_LINE_LENGTH, MIN_DATA_LEN from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValuePatternCheck(Filter): """Check if candidate value contain specific pattern. Similar to linguistic sequences of characters, random strings shouldn't contain math sequences of characters. Based on "How Bad Can It Git? Characterizing Secret Leakage in Public GitHub Repositories", details: https://www.ndss-symposium.org/ndss-paper/how-bad-can-it-git-characterizing-secret-leakage-in-public-github-repositories/ PatternCheck checks the occurrence in "line_data.value" of three types of sequence: - N or more identical characters in sequence, example: "AAAA", "1111" ... - N or more increasing characters sequentially, example: "abcd", "1234" ... - N or more decreasing characters sequentially, example: "dcba", "4321" ... Default pattern LEN is 4 """ MAX_PATTERN_LENGTH = int(MAX_LINE_LENGTH).bit_length() def __init__(self, config: Optional[Config] = None, pattern_len: Optional[int] = None): """Create ValuePatternCheck with a specific pattern_len to check. Args: config: pattern len to use during check. DEFAULT_PATTERN_LEN by default pattern_len: size of constant pattern length for any value size or None for dynamic pattern size """ patterns_count = 1 + ValuePatternCheck.MAX_PATTERN_LENGTH if pattern_len is None: self.pattern_len = -1 # pattern length depends on value length self.pattern_lengths = [max(x, DEFAULT_PATTERN_LEN) for x in range(patterns_count)] self.patterns = [ValuePatternCheck.get_pattern(x) for x in range(patterns_count)] elif isinstance(pattern_len, int) and DEFAULT_PATTERN_LEN <= pattern_len: self.pattern_len = pattern_len # constant pattern for any value length self.pattern_lengths = [pattern_len] * patterns_count self.patterns = [ValuePatternCheck.get_pattern(pattern_len)] * patterns_count else: raise ValueError(f"Wrong type of pattern length {type(pattern_len)} = {repr(pattern_len)}") @staticmethod def get_pattern(pattern_len: int) -> re.Pattern: """Creates regex pattern to find N or more identical characters in sequence""" pattern_length = max(DEFAULT_PATTERN_LEN, pattern_len) if MIN_DATA_LEN <= pattern_length: # base64 long sequences may contain 0x00 or 0xFF inside pattern = fr"([^\sA/_])\1{{{str(pattern_length-1)},}}" else: # up to 256 symbols length pattern = fr"(\S)\1{{{str(pattern_length-1)},}}" return re.compile(pattern) def equal_pattern_check(self, value: str, bit_length: int) -> bool: """Check if candidate value contain 4 and more same chars or numbers sequences. Args: value: string variable, credential candidate value bit_length: speedup for len(value).bit_length() Return: True if contain and False if not """ if self.patterns[bit_length].search(value): return True return False def ascending_pattern_check(self, value: str, bit_length: int) -> bool: """Check if candidate value contain 4 and more ascending chars or numbers sequences. Arg: value: credential candidate value bit_length: speedup for len(value).bit_length() Return: True if contain and False if not """ count = 1 for key in range(len(value) - 1): if ord(value[key + 1]) - ord(value[key]) == 1: count += 1 else: count = 1 continue if count == self.pattern_lengths[bit_length]: return True return False def descending_pattern_check(self, value: str, bit_length: int) -> bool: """Check if candidate value contain 4 and more descending chars or numbers sequences. Arg: value: string variable, credential candidate value bit_length: speedup for len(value).bit_length() Return: boolean variable. True if contain and False if not """ count = 1 for key in range(len(value) - 1): if ord(value[key]) - ord(value[key + 1]) == 1: count += 1 else: count = 1 continue if count == self.pattern_lengths[bit_length]: return True return False def check_val(self, value: str, bit_length: int) -> bool: """Cumulative value check. Arg: value: string variable, credential candidate value bit_length: speedup for len(value).bit_length() Return: boolean variable. True if contain and False if not """ if self.equal_pattern_check(value, bit_length): return True if self.ascending_pattern_check(value, bit_length): return True if self.descending_pattern_check(value, bit_length): return True return False def duple_pattern_check(self, value: str, bit_length: int) -> bool: """Check if candidate value is a duplet value with possible patterns. Arg: value: string variable, credential candidate value bit_length: speedup for len(value).bit_length() Return: boolean variable. True if contain and False if not """ even_value = value[0::2] if self.check_val(even_value, bit_length): odd_value = value[1::2] if self.check_val(odd_value, bit_length): return True return False def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received credential candidate data 'line_data'. Arg: line_data: LineData object, credential candidate data target: multiline target from which line data was obtained Return: boolean variable. True, if need to filter candidate and False if left """ value_length = len(line_data.value) bit_length = max(DEFAULT_PATTERN_LEN, value_length.bit_length()) if ValuePatternCheck.MAX_PATTERN_LENGTH < bit_length: # huge values may contain anything return False if 0 <= value_length < self.pattern_len or value_length < self.pattern_lengths[bit_length]: # too short value return True if self.check_val(line_data.value, bit_length): return True if 2 * self.pattern_lengths[bit_length] <= value_length \ and self.duple_pattern_check(line_data.value, bit_length): return True return False ================================================ FILE: credsweeper/filters/value_sealed_secret_check.py ================================================ from typing import Optional from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueSealedSecretCheck(Filter): """ Check that candidate may be a sealed secret https://github.com/bitnami-labs/sealed-secrets/blob/main/docs/developer/crypto.md """ MAX_SEARCH_MARGIN = 100 def __init__(self, config: Optional[Config] = None) -> None: pass def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received value and check context for sealed secret markers. Can be applied effective for plain scan when the value is full and the target has lines around. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, when need to filter candidate and False if left """ if (value := line_data.value) and (value.startswith('Ag') and 700 < len(value) and 'A' <= value[2] <= 'D' or value.startswith('AQ') and 350 < len(value) and 'A' <= value[2] <= 'D'): from_line = max(0, line_data.line_pos - ValueSealedSecretCheck.MAX_SEARCH_MARGIN) to_line = min(len(target.lines), line_data.line_pos + ValueSealedSecretCheck.MAX_SEARCH_MARGIN) sealed_secret_marker = encrypted_data_marker = bitnami_marker = False for line in target.lines[from_line:to_line]: if not sealed_secret_marker and 0 <= line.find("SealedSecret", 0, MAX_LINE_LENGTH): sealed_secret_marker = True if not encrypted_data_marker and 0 <= line.find("encryptedData", 0, MAX_LINE_LENGTH): encrypted_data_marker = True if not bitnami_marker and 0 <= line.find("bitnami", 0, MAX_LINE_LENGTH): bitnami_marker = True if sealed_secret_marker and encrypted_data_marker and bitnami_marker: return True return False ================================================ FILE: credsweeper/filters/value_search_check.py ================================================ from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueSearchCheck(Filter): """Check whether a candidate value contains a pattern - useful for multi rules""" def __init__(self, config: Optional[Config] = None, pattern: Optional[str] = None) -> None: self.pattern = pattern 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.pattern and line_data.value: if len(self.pattern) < len(line_data.value): if self.pattern in line_data.value: return True else: if line_data.value in self.pattern: return True return False ================================================ FILE: credsweeper/filters/value_similarity_check.py ================================================ from difflib import SequenceMatcher from typing import Optional from credsweeper.common.constants import MIN_VALUE_LENGTH from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueSimilarityCheck(Filter): """Check if candidate value is over 75% similarity as candidate variable. Like: `secret = "mysecret"` (0.8571).""" def __init__(self, config: Optional[Config] = None) -> None: pass 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 line_data.variable and line_data.value: variable_lower = line_data.variable.lower() value_lower = line_data.value.lower() if len(value_lower) <= len(variable_lower): if value_lower in variable_lower: return True elif MIN_VALUE_LENGTH <= len(variable_lower): # `api` and `key` may be in the value if variable_lower in value_lower: return True if 0.75 < SequenceMatcher(None, variable_lower, value_lower).ratio(): return True return False ================================================ FILE: credsweeper/filters/value_split_keyword_check.py ================================================ from typing import Optional from typing import Union from credsweeper.common import static_keyword_checklist from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueSplitKeywordCheck(Filter): """Check value by splitting with standard whitespace separators and any word is not matched in checklist.""" def __init__(self, config: Optional[Config] = None) -> None: pass 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 """ words: Union[set, list] = line_data.value.lower().split() keyword_set = static_keyword_checklist.keyword_set for word in words: if word in keyword_set: return True return False ================================================ FILE: credsweeper/filters/value_string_type_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueStringTypeCheck(Filter): r"""Check if line_data is in source code file that require quotes for string declaration. If it is, then checks if line_data really have string literal declaration. Comment rows in source files (start with //, /\*, etc) ignored. Multiple bytes scenario allowed [123,23,54,67,78,89] or {0xae, 0x54, 0x55, 0xff} True if: - line_data have no value - line_data have no path - line_data is in source code file (.cpp, .py, etc.) and is not comment and contain no quotes (so no string literal declared) False otherwise """ MULTIBYTE_PATTERN = re.compile(r"((0x)?[0-9a-f]{1,16}[UL]*)(\s*,\s*((0x)?[0-9a-f]{1,16}[UL]*)){3}", flags=re.IGNORECASE) def __init__(self, config: Optional[Config] = None, check_for_literals=True) -> None: self.check_for_literals = check_for_literals 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 not self.check_for_literals or line_data.url_part: return False if ValueStringTypeCheck.MULTIBYTE_PATTERN.search(line_data.value): return False if line_data.is_source_file_with_quotes() \ and not line_data.is_comment() \ and not line_data.is_well_quoted_value \ and not line_data.is_quoted \ and not '0' <= line_data.value[0] <= '9' \ and line_data.separator and '=' in line_data.separator: # heterogeneous code e.g. YAML in Python uses colon sign instead equals return True return False ================================================ FILE: credsweeper/filters/value_token_base32_check.py ================================================ from typing import Tuple from credsweeper.filters.value_token_base_check import ValueTokenBaseCheck class ValueTokenBase32Check(ValueTokenBaseCheck): """Check that candidate have good randomization""" RANGE_DICT = { 8: ((3.480934, 0.8482364556537906), (1.9280820731422028, 0.5833143826506801)), 10: ((3.4801753333333334, 0.7508676237320747), (1.9558544090983234, 0.5119385414964345)), 15: ((3.4803549285714284, 0.603220270918794), (1.9896690734372564, 0.40640877687972476)), 16: ((3.4798649333333334, 0.5837818960141307), (1.9938368543943692, 0.392547066949958)), 20: ((3.4809878947368422, 0.518785674729997), (2.0058661928593517, 0.34692788889724946)), 24: ((3.480511086956522, 0.4726670109337228), (2.0131379532992537, 0.31476354168931936)), 25: ((3.480877375, 0.4626150412368404), (2.0147828593929953, 0.3075894753390553)), 32: ((3.4809023548387095, 0.4072672632996217), (2.0231609118646867, 0.2700344059876962)), 40: ((3.4801929743589746, 0.36361457820793436), (2.027858606807074, 0.2401498396303172)), 50: ((3.4798551224489795, 0.323708167297437), (2.0318808048208794, 0.2138098551294688)), 64: ((3.4805990476190476, 0.28572156450556774), (2.035756800745673, 0.18815721535870078)), } @staticmethod def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]: """Returns minimal, maximal for hop and deviation. Precalculated data is applied for speedup""" if result := ValueTokenBase32Check.RANGE_DICT.get(size): ppf = ValueTokenBaseCheck.get_ppf(size) return ((result[0][0] - ppf * result[0][1], result[0][0] + ppf * result[0][1]), (result[1][0] - ppf * result[1][1], result[1][0] + ppf * result[1][1])) # not calculated raise ValueError(f"Not calculated for {size}") ================================================ FILE: credsweeper/filters/value_token_base36_check.py ================================================ from typing import Tuple from credsweeper.filters.value_token_base_check import ValueTokenBaseCheck class ValueTokenBase36Check(ValueTokenBaseCheck): """Check that candidate have good randomization""" RANGE_DICT = { 8: ((3.7190542428571427, 0.8995506118495411), (2.066095086865182, 0.609210293352161)), 10: ((3.719109611111111, 0.7956463384852813), (2.0946299036665494, 0.5322004874842623)), 15: ((3.719274257142857, 0.6401989313894239), (2.129437216268589, 0.42108786288993155)), 16: ((3.7192072666666665, 0.6188627491757901), (2.1336109506109366, 0.4064699817331141)), 20: ((3.719249815789474, 0.5506473627709657), (2.145293932511567, 0.3591543917048417)), 24: ((3.7191934304347827, 0.50051922802262), (2.152858549996053, 0.3252064160191062)), 25: ((3.7192351583333334, 0.4904181410613897), (2.1543202565038735, 0.31823801389315026)), 32: ((3.7190408419354837, 0.4315967526660196), (2.1620321219700767, 0.2788634701820312)), 40: ((3.7191682666666668, 0.3852248727988986), (2.16746680811131, 0.24802261318501675)), 50: ((3.718913744897959, 0.3436564880405547), (2.1715676118603806, 0.22070510537297627)), 64: ((3.7190009761904763, 0.30325954360127116), (2.1751172797904093, 0.1942582237461476)), } @staticmethod def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]: """Returns minimal, maximal for hop and deviation. Precalculated data is applied for speedup""" if result := ValueTokenBase36Check.RANGE_DICT.get(size): ppf = ValueTokenBaseCheck.get_ppf(size) return ((result[0][0] - ppf * result[0][1], result[0][0] + ppf * result[0][1]), (result[1][0] - ppf * result[1][1], result[1][0] + ppf * result[1][1])) # not calculated raise ValueError(f"Not calculated for {size}") ================================================ FILE: credsweeper/filters/value_token_base64_check.py ================================================ from typing import Tuple from credsweeper.filters.value_token_base_check import ValueTokenBaseCheck class ValueTokenBase64Check(ValueTokenBaseCheck): """Check that candidate have good randomization""" RANGE_DICT = { 8: ((3.7627115714285715, 0.9413431166706269), (2.1378378843992736, 0.6394596814295781)), 10: ((3.7617393333333333, 0.8327986018456262), (2.168873183866972, 0.5605393324056347)), 15: ((3.7619624285714286, 0.6698092646328063), (2.2080058406286702, 0.4447698491992352)), 16: ((3.7618573333333334, 0.6471500119793832), (2.2116826642934453, 0.4288377928263507)), 20: ((3.7618887368421055, 0.575813792926031), (2.224384985667721, 0.37985781543221253)), 24: ((3.7621449565217393, 0.5243297908608613), (2.2326041329976607, 0.34397389723600613)), 25: ((3.762616791666667, 0.5137934920050976), (2.234571917211925, 0.3366547036535176)), 32: ((3.761885838709677, 0.4521158322065318), (2.2426375800006153, 0.29506039075960255)), 40: ((3.7622649487179487, 0.4031261511824518), (2.2485911621253574, 0.2622954601051068)), 50: ((3.762087693877551, 0.3597404118023357), (2.2533774423872956, 0.23384524947332655)), 64: ((3.7625271746031745, 0.31733579704946846), (2.257532519514275, 0.20571908142867643)), } @staticmethod def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]: """Returns minimal, maximal for hop and deviation. Precalculated data is applied for speedup""" if result := ValueTokenBase64Check.RANGE_DICT.get(size): ppf = ValueTokenBaseCheck.get_ppf(size) return ((result[0][0] - ppf * result[0][1], result[0][0] + ppf * result[0][1]), (result[1][0] - ppf * result[1][1], result[1][0] + ppf * result[1][1])) # not calculated raise ValueError(f"Not calculated for {size}") ================================================ FILE: credsweeper/filters/value_token_base_check.py ================================================ import contextlib from abc import abstractmethod from typing import Optional from typing import Tuple from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.utils.hop_stat import HopStat class ValueTokenBaseCheck(Filter): """Check that candidate have good randomization""" MUL_DICT = { 8: 2.61619746, 10: 2.48685659, 15: 2.34025271, 16: 2.32370290, 20: 2.27614996, 24: 2.24609586, 25: 2.24023515, 32: 2.21025277, 40: 2.18961571, 50: 2.17355282, 64: 2.15981241, } def __init__(self, config: Optional[Config] = None) -> None: self.__hop_stat = HopStat() @staticmethod @abstractmethod def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]: """Returns minimal strength. Precalculated data is applied for speedup""" raise NotImplementedError @staticmethod def get_ppf(n: int) -> float: """Code used to produce the values""" # from scipy.stats import t # print('\n'.join(f'{n}: {t.ppf(0.9827, n-1):.8f},' for n in [8,10,15,16,20,24,25,32,40,50,64])) return ValueTokenBaseCheck.MUL_DICT[n] 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 """ with contextlib.suppress(Exception): hop, dev = self.__hop_stat.stat(line_data.value) (min_hop, max_hop), (min_dev, max_dev) = self.get_stat_range(len(line_data.value)) if not (min_hop <= hop <= max_hop and min_dev <= dev <= max_dev): return True return False ================================================ FILE: credsweeper/filters/value_token_check.py ================================================ import re from typing import Optional from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter class ValueTokenCheck(Filter): """Check if first substring of token is shorter than 5. Split candidate value into substrings using ` ;`{})(<>[]` separators. Check if first substring is shorter than 5 Examples: "my password" "12);password" """ SPLIT_PATTERN = re.compile(r"(?[\]`]") def __init__(self, config: Optional[Config] = None) -> None: pass 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 line_data.is_well_quoted_value: return False tokens = re.split(self.SPLIT_PATTERN, line_data.value, maxsplit=1) # If tokens have length of 1 - pattern is not present in the value and original value returned from `.split(` if len(tokens) < 2: return False token = tokens[0] if len(token) < 5: return True return False ================================================ FILE: credsweeper/logger/__init__.py ================================================ ================================================ FILE: credsweeper/logger/logger.py ================================================ import logging import logging.config from pathlib import Path from typing import Optional from credsweeper.app import APP_PATH from credsweeper.utils.util import Util class Logger: """Class that used to configure logging in CredSweeper.""" SILENCE = 60 LEVELS = { "DEBUG": logging.DEBUG, "INFO": logging.INFO, "WARN": logging.WARNING, "WARNING": logging.WARNING, "ERROR": logging.ERROR, "FATAL": logging.CRITICAL, "CRITICAL": logging.CRITICAL, "SILENCE": SILENCE } @staticmethod def init_logging(log_level: str, file_path: Optional[str] = None) -> None: """Init logger. Init logging with configuration from file 'credsweeper_path/secret/log.yaml'. For configure log level of console output used 'log_level' args Args: log_level: log level for console output file_path: path of custom log config """ try: level = Logger.LEVELS.get(log_level.upper()) if level is None: raise ValueError(f"log level given: {log_level} -- must be one of: {' | '.join(Logger.LEVELS.keys())}") logging_config = Util.yaml_load(file_path) if file_path else None if not logging_config: logging_config = Util.yaml_load(APP_PATH / "secret" / "log.yaml") log_dir = Path(logging_config["handlers"]["logfile"]["filename"]).resolve().parent log_dir.mkdir(exist_ok=True) logging_config["handlers"]["console"]["level"] = level logging.config.dictConfig(logging_config) for module in logging_config["ignore"]: logging.getLogger(module).setLevel(logging.ERROR) except OSError: logging.basicConfig(level=logging.WARNING) ================================================ FILE: credsweeper/main.py ================================================ import binascii import contextlib import logging import os import sys import time from argparse import ArgumentParser, ArgumentTypeError, Namespace, BooleanOptionalAction from pathlib import Path from typing import Any, Union, Dict, Tuple, Sequence from git import Repo, Commit from credsweeper import __version__ from credsweeper.app import APP_PATH, CredSweeper from credsweeper.common.constants import ThresholdPreset, Severity, RuleType, DiffRowType, ML_HUNK from credsweeper.file_handler.abstract_provider import AbstractProvider from credsweeper.file_handler.byte_content_provider import ByteContentProvider from credsweeper.file_handler.files_provider import FilesProvider from credsweeper.file_handler.patches_provider import PatchesProvider from credsweeper.logger.logger import Logger from credsweeper.utils.util import Util EXIT_SUCCESS = 0 EXIT_FAILURE = 1 logger = logging.getLogger(__name__) def positive_int(value: Any) -> int: """Check if number of parallel processes is not a positive number.""" int_value = int(value) if int_value <= 0: logger.error("Number of parallel processes should be a positive number: %s", value) raise ArgumentTypeError(f"{value} should be greater than 0") return int_value def threshold_or_float_or_zero(arg: str) -> Union[int, float, ThresholdPreset]: """Return ThresholdPreset or a float from the input string Args: arg: string that either a float or one of allowed values in ThresholdPreset Returns: int = 0 to disable ML validator, float if arg convertible to float, ThresholdPreset if one of the allowed values Raises: ArgumentTypeError: if arg cannot be interpreted as float or ThresholdPreset """ allowed_presents = [e.value for e in ThresholdPreset] if '0' == arg: return 0 with contextlib.suppress(ValueError): return float(arg) # try convert to float if arg in allowed_presents: return ThresholdPreset[arg] raise ArgumentTypeError(f"value must be a float or one of {allowed_presents}") def logger_levels(log_level: str) -> str: """Logger level correctness verification and transformation Args: log_level: string with level Returns True if log_level UPPERCASE is one of keys """ val = log_level.upper() if val in Logger.LEVELS: return val raise ArgumentTypeError(f"Log level provided: {log_level} -- must be one of: {' | '.join(Logger.LEVELS.keys())}") def severity_levels(severity_level: str) -> Severity: """Severity level correctness verification and transformation Args: severity_level: string with level Returns Severity matched provided string or throws ArgumentTypeError exception """ if severity := Severity.get(severity_level): return severity raise ArgumentTypeError( f"Severity level provided: {severity_level} -- must be one of: {' | '.join([i.value for i in Severity])}") def check_integrity() -> int: """Calculates CRC32 of program files Returns CRC32 of files in integer """ crc32 = 0 for root, _dirs, files in os.walk(APP_PATH): for file_name in files: if Util.get_extension(file_name) in [".py", ".json", ".txt", ".yaml", ".onnx"]: file_path = Path(root) / file_name if data := Util.read_data(file_path): crc32 ^= binascii.crc32(data) return crc32 def get_arguments() -> Namespace: """All CLI arguments are defined here""" parser = ArgumentParser(prog="python -m credsweeper") single_banner_argument = 2 == len(sys.argv) and "--banner" == sys.argv[1] group = parser.add_mutually_exclusive_group(required=not single_banner_argument) group.add_argument("--path", nargs="+", help="file or directory to scan", dest="path", metavar="PATH") group.add_argument("--diff_path", nargs="+", help="git diff file to scan", dest="diff_path", metavar="PATH") group.add_argument("--export_config", nargs="?", help="exporting default config to file (default: config.json)", const="config.json", dest="export_config", metavar="PATH") group.add_argument("--export_log_config", nargs="?", help="exporting default logger config to file (default: log.yaml)", const="log.yaml", dest="export_log_config", metavar="PATH") group.add_argument("--git", help="git repo to scan", dest="git", metavar="PATH") parser.add_argument("--ref", help="scan git repo from the ref, otherwise - all branches were scanned (slow)", dest="ref", type=str) parser.add_argument("--rules", help="path of rule config file (default: credsweeper/rules/config.yaml). " f"severity:{[i.value for i in Severity]} " f"type:{[i.value for i in RuleType]}", default=None, dest="rule_path", metavar="PATH") parser.add_argument("--severity", help=f"set minimum level for rules to apply {[i.value for i in Severity]}" f"(default: '{Severity.INFO}', case insensitive)", default=Severity.INFO, dest="severity", type=severity_levels) parser.add_argument("--config", help="use custom config (default: built-in)", default=None, dest="config_path", metavar="PATH") parser.add_argument("--log_config", help="use custom log config (default: built-in)", default=None, dest="log_config_path", metavar="PATH") parser.add_argument("--denylist", help="path to a plain text file with lines or secrets to ignore", default=None, dest="denylist_path", metavar="PATH") parser.add_argument("--find-by-ext", help="find files by predefined extension", dest="find_by_ext", action="store_true") parser.add_argument("--pedantic", help="process files without extension", action=BooleanOptionalAction, default=False) parser.add_argument("--depth", help="additional recursive search in data (experimental)", type=positive_int, dest="depth", default=0, required=False, metavar="POSITIVE_INT") parser.add_argument("--no-filters", help="disable filters", dest="no_filters", action="store_false") parser.add_argument("--doc", help="document-specific scanning", dest="doc", action="store_true") parser.add_argument("--ml_threshold", help="setup threshold for the ml model. " "The lower the threshold - the more credentials will be reported. " f"Allowed values: float between 0 and 1, or any of {[e.value for e in ThresholdPreset]} " "(default: medium)", type=threshold_or_float_or_zero, default=ThresholdPreset.medium, dest="ml_threshold", required=False, metavar="THRESHOLD_OR_FLOAT_OR_ZERO") parser.add_argument("--ml_batch_size", "-b", help="batch size for model inference (default: 16)", type=positive_int, dest="ml_batch_size", default=16, required=False, metavar="POSITIVE_INT") parser.add_argument("--ml_config", help="use external config for ml model", type=str, default=None, dest="ml_config", required=False, metavar="PATH") parser.add_argument("--ml_model", help="use external ml model", type=str, default=None, dest="ml_model", required=False, metavar="PATH") parser.add_argument("--ml_providers", help="comma separated list of providers for onnx (CPUExecutionProvider is used by default)", type=str, default=None, dest="ml_providers", required=False, metavar="STR") parser.add_argument("--jobs", "-j", help="number of parallel processes to use (default: 1)", type=positive_int, dest="jobs", default=1, metavar="POSITIVE_INT") parser.add_argument("--thrifty", help="clear objects after scan to reduce memory consumption", action=BooleanOptionalAction, default=True) parser.add_argument("--skip_ignored", help="parse .gitignore files and skip credentials from ignored objects", dest="skip_ignored", action="store_true") parser.add_argument("--error", help="produce error code if credentials are found", action=BooleanOptionalAction, default=False) parser.add_argument("--save-json", nargs="?", help="save result to json file (default: output.json)", const="output.json", dest="json_filename", metavar="PATH") parser.add_argument("--save-xlsx", nargs="?", help="save result to xlsx file (default: output.xlsx)", const="output.xlsx", dest="xlsx_filename", metavar="PATH") parser.add_argument("--stdout", help="print results to stdout", action=BooleanOptionalAction, default=True) parser.add_argument("--color", help="print results with colorization", action=BooleanOptionalAction, default=False) parser.add_argument("--hashed", help="line, variable, value will be hashed in output", action=BooleanOptionalAction, default=False) parser.add_argument("--subtext", help=f"line text will be stripped in {2 * ML_HUNK} symbols but value and variable are kept", action=BooleanOptionalAction, default=False) parser.add_argument("--sort", help="enable output sorting", dest="sort_output", action=BooleanOptionalAction, default=False) parser.add_argument("--log", "-l", help=(f"provide logging level of {list(Logger.LEVELS.keys())}" f" (default: 'warning', case insensitive)"), default="warning", dest="log", metavar="LOG_LEVEL", type=logger_levels) parser.add_argument("--size_limit", help="set size limit of files that for scanning (eg. 1GB / 10MiB / 1000)", dest="size_limit", default=None) parser.add_argument("--banner", help="show version and crc32 sum of CredSweeper files at start", action="store_const", const=True) parser.add_argument("--version", "-V", help="show program's version number and exit", action="version", version=f"CredSweeper {__version__}") return parser.parse_args() def get_credsweeper(args: Namespace) -> CredSweeper: """Common function to create the instance""" if args.denylist_path is not None: denylist = [line for line in Util.read_file(args.denylist_path) if line] else: denylist = [] return CredSweeper(rule_path=args.rule_path, config_path=args.config_path, json_filename=args.json_filename, xlsx_filename=args.xlsx_filename, stdout=args.stdout, color=args.color, hashed=args.hashed, subtext=args.subtext, sort_output=args.sort_output, use_filters=args.no_filters, pool_count=args.jobs, ml_batch_size=args.ml_batch_size, ml_threshold=args.ml_threshold, ml_config=args.ml_config, ml_model=args.ml_model, ml_providers=args.ml_providers, find_by_ext=args.find_by_ext, pedantic=args.pedantic, depth=args.depth, doc=args.doc, severity=args.severity, size_limit=args.size_limit, exclude_lines=denylist, exclude_values=denylist, thrifty=args.thrifty, log_level=args.log) def scan(args: Namespace, content_provider: AbstractProvider) -> int: """Scan content_provider data, print results or save them to json_filename is not None Args: args: arguments of the application content_provider: FilesProvider instance to scan data from Returns: Number of detected credentials Warnings: DeprecationWarning: Using 'json_filename' and/or 'xlsx_filename' will issue a warning. """ try: credsweeper = get_credsweeper(args) return credsweeper.run(content_provider=content_provider) except Exception as exc: logger.critical(exc, exc_info=True) logger.exception(exc) return -1 def get_commit_providers(commit: Commit, repo: Repo) -> Sequence[ByteContentProvider]: """Process a commit and for providers""" result = {} # use the hardcoded sha1 until sha256 objects are not supported by GitPython ancestors = commit.parents or [repo.tree("4b825dc642cb6eb9a060e54bf8d69288fbee4904")] for parent in ancestors: for diff in parent.diff(commit): # only result files blob_b = diff.b_blob if blob_b and blob_b.path not in result: try: result[blob_b.path] = ByteContentProvider(content=blob_b.data_stream.read(), file_path=str(blob_b.path), info=DiffRowType.ADDED.value) except Exception as exc: logger.warning("A submodule was not properly initialized or commit was removed: %s", exc) return list(result.values()) def drill(args: Namespace) -> Tuple[int, int]: """Scan repository for branches and commits Args: args: arguments of the application Returns: total credentials found total scanned commits """ total_credentials = 0 total_commits = 0 try: # repo init first repo = Repo(args.git) if args.ref: commits_sha1 = set(x.commit.hexsha for x in repo.refs if x.name == args.ref) if not commits_sha1: commits_sha1 = {args.ref} # single commit sha1 reference else: commits_sha1 = set(x.commit.hexsha for x in repo.refs if x.name.startswith('origin/') or x.name.startswith('refs/heads/')) logger.info("Git repository %s with commits: %s", args.git, commits_sha1) # then - credsweeper credsweeper = get_credsweeper(args) # use flat iterations to avoid recursive limits to_scan = set(commits_sha1) # local speedup for already scanned commits - avoid file system interactive scanned = set() # to avoid double-check skipped = set() while to_scan: commit_sha1 = to_scan.pop() if commit_sha1 in scanned: # the commit was scanned in this launch continue commit = repo.commit(commit_sha1) if commit.parents: # add parents only when they were not skipped or scanned previously to_scan.update(x.hexsha for x in commit.parents if x.hexsha not in skipped and x.hexsha not in scanned) # check whether the commit has been checked and the report is present skip_already_scanned = False if args.json_filename: json_path = Path(args.json_filename) json_path = json_path.with_suffix(f".{commit_sha1}{json_path.suffix}") if json_path.exists(): skip_already_scanned = True else: credsweeper.json_filename = json_path if args.xlsx_filename: xlsx_path = Path(args.xlsx_filename) xlsx_path = xlsx_path.with_suffix(f".{commit_sha1}{xlsx_path.suffix}") if xlsx_path.exists(): skip_already_scanned = True else: credsweeper.xlsx_filename = xlsx_path if skip_already_scanned: skipped.add(commit_sha1) logger.info("Skip already scanned commit: %s %s", commit_sha1, commit.committed_datetime.isoformat()) continue logger.info("Scan commit: %s %s", commit_sha1, commit.committed_datetime.isoformat()) # prepare all files to scan in the commit with bytes->IO transformation to avoid a multiprocess issue if providers := get_commit_providers(commit, repo): credsweeper.credential_manager.candidates.clear() credsweeper.scan(providers) credsweeper.post_processing() credsweeper.export_results() total_credentials += credsweeper.credential_manager.len_credentials() total_commits += 1 scanned.add(commit_sha1) except Exception as exc: logger.critical(exc, exc_info=True) return -1, total_commits return total_credentials, total_commits def main() -> int: """Main function""" start_time = time.perf_counter() result = EXIT_FAILURE credentials_number = 0 args = get_arguments() if args.banner: print(f"CredSweeper {__version__} crc32:{check_integrity():08x}") Logger.init_logging(args.log, args.log_config_path) logger.info("Init CredSweeper object with arguments: %s CWD: %s", args, os.getcwd()) summary: Dict[str, int] = {} if args.path: logger.info("Run analyzer on path: %s", args.path) content_provider: AbstractProvider = FilesProvider(args.path, skip_ignored=args.skip_ignored) credentials_number = scan(args, content_provider) summary["Detected Credentials"] = credentials_number if 0 <= credentials_number: result = EXIT_SUCCESS elif args.diff_path: # Analyze added data logger.info("Run analyzer on added rows from patch files: %s", args.diff_path) content_provider = PatchesProvider(args.diff_path, change_type=DiffRowType.ADDED) add_credentials_number = scan(args, content_provider) summary["Added File Credentials"] = add_credentials_number # Analyze deleted data logger.info("Run analyzer on deleted rows from patch files: %s", args.diff_path) content_provider = PatchesProvider(args.diff_path, change_type=DiffRowType.DELETED) del_credentials_number = scan(args, content_provider) summary["Deleted File Credentials"] = del_credentials_number if 0 <= add_credentials_number and 0 <= del_credentials_number: # it means the scan was successful done result = EXIT_SUCCESS # collect number of all found credential to produce error code when necessary credentials_number = add_credentials_number + del_credentials_number elif args.git: logger.info("Run analyzer on GIT: %s", args.git) credentials_number, commits_number = drill(args) summary[f"Detected Credentials in {args.git} for {commits_number} commits "] = credentials_number if 0 <= credentials_number: result = EXIT_SUCCESS elif args.export_config: logger.info("Exporting default config to file: %s", args.export_config) config_dict = Util.json_load(APP_PATH / "secret" / "config.json") Util.json_dump(config_dict, args.export_config) result = EXIT_SUCCESS elif args.export_log_config: logger.info("Exporting default logger config to file: %s", args.export_log_config) config_dict = Util.yaml_load(APP_PATH / "secret" / "log.yaml") Util.yaml_dump(config_dict, args.export_log_config) result = EXIT_SUCCESS elif args.banner and 2 == len(sys.argv): # only extend version invocation result = EXIT_SUCCESS else: logger.error("Not specified 'path' or 'diff_path'") if EXIT_SUCCESS == result and len(summary): for k, v in summary.items(): print(f"{k}: {v}") print(f"Time Elapsed: {time.perf_counter() - start_time}") if args.error and EXIT_SUCCESS == result and 0 < credentials_number: # override result when credentials were found with the requirement result = EXIT_FAILURE return result ================================================ FILE: credsweeper/ml_model/__init__.py ================================================ ================================================ FILE: credsweeper/ml_model/features/__init__.py ================================================ from credsweeper.ml_model.features.entropy_evaluation import EntropyEvaluation from credsweeper.ml_model.features.file_extension import FileExtension from credsweeper.ml_model.features.has_html_tag import HasHtmlTag from credsweeper.ml_model.features.is_secret_numeric import IsSecretNumeric from credsweeper.ml_model.features.length_of_attribute import LengthOfAttribute from credsweeper.ml_model.features.morpheme_dense import MorphemeDense from credsweeper.ml_model.features.rule_name import RuleName from credsweeper.ml_model.features.rule_severity import RuleSeverity from credsweeper.ml_model.features.search_in_attribute import SearchInAttribute from credsweeper.ml_model.features.word_in_path import WordInPath from credsweeper.ml_model.features.word_in_postamble import WordInPostamble from credsweeper.ml_model.features.word_in_preamble import WordInPreamble from credsweeper.ml_model.features.word_in_transition import WordInTransition from credsweeper.ml_model.features.word_in_value import WordInValue from credsweeper.ml_model.features.word_in_variable import WordInVariable ================================================ FILE: credsweeper/ml_model/features/entropy_evaluation.py ================================================ import math from typing import Dict, List, Set import numpy as np from credsweeper.common.constants import Chars, ML_HUNK from credsweeper.credentials.candidate import Candidate from credsweeper.file_handler.data_content_provider import MIN_DATA_LEN from credsweeper.ml_model.features.feature import Feature class EntropyEvaluation(Feature): """ Renyi, Shannon entropy evaluation with Hartley entropy normalization. Augmentation with possible set of chars (hex, base64, etc.) Analyse only begin of the value See next link for details: https://digitalassets.lib.berkeley.edu/math/ucb/text/math_s4_v1_article-27.pdf """ # Max size of ML analyzed value is ML_HUNK but value may be bigger HUNK_SIZE = 4 * ML_HUNK LOG2_CACHE: Dict[int, float] = {x: math.log2(x) for x in range(4, 4 * ML_HUNK + 1)} CHAR_SET: List[Set[str]] = [set(x.value) for x in Chars] RESULT_SIZE = 3 + len(Chars) def extract(self, candidate: Candidate) -> np.ndarray: """Returns real entropy and possible sets of characters""" # only head of value will be analyzed result: np.ndarray = np.zeros(shape=EntropyEvaluation.RESULT_SIZE, dtype=np.float32) value = candidate.line_data_list[0].value[:EntropyEvaluation.HUNK_SIZE] size = len(value) uniq, counts = np.unique(list(value), return_counts=True) if MIN_DATA_LEN <= size: # evaluate the entropy for a value of at least 4 probabilities = counts / size hartley_entropy = EntropyEvaluation.LOG2_CACHE.get(size, -1.0) # renyi_entropy alpha=0.5 sum_prob_05 = np.sum(probabilities**0.5) renyi_entropy_05 = 2 * np.log2(sum_prob_05) result[0] = renyi_entropy_05 / hartley_entropy # shannon_entropy or renyi_entropy alpha=1 shannon_entropy = -np.sum(probabilities * np.log2(probabilities)) result[1] = shannon_entropy / hartley_entropy # renyi_entropy alpha=2 sum_prob_2 = np.sum(probabilities**2) renyi_entropy_2 = -1 * np.log2(sum_prob_2) result[2] = renyi_entropy_2 / hartley_entropy if 0 < size: # check charset for non-zero value # use the new variable to deal with mypy uniq_set = set(uniq) for n, i in enumerate(EntropyEvaluation.CHAR_SET, start=3): if not uniq_set.difference(i): result[n] = 1.0 return result ================================================ FILE: credsweeper/ml_model/features/feature.py ================================================ from abc import ABC, abstractmethod from typing import List, Any import numpy as np from credsweeper.credentials.candidate import Candidate class Feature(ABC): """Base class for features.""" def __init__(self): pass def __call__(self, candidates: List[Candidate]) -> np.ndarray: """Call base class for features. Args: candidates: list of candidates to extract features """ return np.array([self.extract(candidate) for candidate in candidates]) @abstractmethod def extract(self, candidate: Candidate) -> Any: """Abstract method of base class""" raise NotImplementedError ================================================ FILE: credsweeper/ml_model/features/file_extension.py ================================================ from typing import List, Any import numpy as np from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class FileExtension(WordIn): """Categorical feature of file type. Parameters: extensions: extension labels """ def __init__(self, extensions: List[str]) -> None: super().__init__(words=extensions) def __call__(self, candidates: List[Candidate]) -> np.ndarray: extension_set = set(candidate.line_data_list[0].file_type.lower() for candidate in candidates) return self.word_in_(extension_set) def extract(self, candidate: Candidate) -> Any: raise NotImplementedError ================================================ FILE: credsweeper/ml_model/features/has_html_tag.py ================================================ from credsweeper.common.constants import CHUNK_SIZE from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn from credsweeper.utils.util import Util class HasHtmlTag(WordIn): """Feature is true if line has HTML tags (HTML file).""" HTML_WORDS = [ '< img', ' None: super().__init__(HasHtmlTag.HTML_WORDS) def extract(self, candidate: Candidate) -> float: subtext = Util.subtext(candidate.line_data_list[0].line, candidate.line_data_list[0].value_start, CHUNK_SIZE) candidate_line_data_list_0_line_lower = subtext.lower() if '<' not in candidate_line_data_list_0_line_lower: # early check return -1.0 for i in self.words: if i in candidate_line_data_list_0_line_lower: return 1.0 if "/>" in candidate_line_data_list_0_line_lower or " float: with contextlib.suppress(ValueError): float(candidate.line_data_list[0].value) return 1.0 return -1.0 ================================================ FILE: credsweeper/ml_model/features/length_of_attribute.py ================================================ import numpy as np from credsweeper.common.constants import ML_HUNK from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.feature import Feature class LengthOfAttribute(Feature): """Abstract class for obtain a normalized value of length with max size of hunk""" def __init__(self, attribute: str): super().__init__() if "line" == attribute: self.hunk_plus = 2 * ML_HUNK + 1 elif "value" == attribute or "variable" == attribute: self.hunk_plus = ML_HUNK + 1 else: raise ValueError(f"Not supported attribute '{attribute}'") self.attribute = attribute def extract(self, candidate: Candidate) -> np.ndarray: """Returns boolean for first LineData member""" if attribute := getattr(candidate.line_data_list[0], self.attribute, None): if len(attribute) < self.hunk_plus: # should be in (0, 1) return np.array([len(attribute) / self.hunk_plus]) # 1.0 means the attribute is oversize return np.array([1.0]) # the attribute is empty return np.array([0.0]) ================================================ FILE: credsweeper/ml_model/features/morpheme_dense.py ================================================ from credsweeper.common import static_keyword_checklist from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.feature import Feature class MorphemeDense(Feature): """Feature calculates morphemes density for a value""" def extract(self, candidate: Candidate) -> float: density = 0.0 if value := candidate.line_data_list[0].value.lower(): morphemes_length = 0 for morpheme in static_keyword_checklist.morpheme_set: morpheme_pos = value.find(morpheme) if 0 <= morpheme_pos: morpheme_len = len(morpheme) while 0 <= morpheme_pos: morphemes_length += morpheme_len morpheme_pos += morpheme_len morpheme_pos = value.find(morpheme, morpheme_pos) # normalization: minimal morpheme length is 3 density = morphemes_length / len(value) if 1.0 < density: # overlap morpheme case density = 1.0 return density ================================================ FILE: credsweeper/ml_model/features/rule_name.py ================================================ from typing import List, Any import numpy as np from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class RuleName(WordIn): """Categorical feature that corresponds to rule name. Parameters: rule_names: rule name labels """ def __init__(self, rule_names: List[str]) -> None: super().__init__(words=rule_names) def __call__(self, candidates: List[Candidate]) -> np.ndarray: candidate_rule_set = set(x.rule_name for x in candidates) return self.word_in_(candidate_rule_set) def extract(self, candidate: Candidate) -> Any: raise NotImplementedError ================================================ FILE: credsweeper/ml_model/features/rule_severity.py ================================================ from credsweeper.common.constants import Severity from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.feature import Feature class RuleSeverity(Feature): """Categorical feature that corresponds to rule name.""" def extract(self, candidate: Candidate) -> float: if Severity.CRITICAL == candidate.severity: return 1.0 if Severity.HIGH == candidate.severity: return 0.75 if Severity.MEDIUM == candidate.severity: return 0.5 if Severity.LOW == candidate.severity: return 0.25 if Severity.INFO == candidate.severity: return 0.0 raise ValueError(f"Unknown type of severity: {candidate.severity}") ================================================ FILE: credsweeper/ml_model/features/search_in_attribute.py ================================================ import re from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.feature import Feature class SearchInAttribute(Feature): """Abstract feature returns boolean for matched pattern in member of first LineData""" def __init__(self, pattern: str, attribute: str): super().__init__() self.pattern = re.compile(pattern) self.attribute = attribute def extract(self, candidate: Candidate) -> float: """Returns boolean for first LineData member""" if attribute := getattr(candidate.line_data_list[0], self.attribute, None): if self.pattern.search(attribute): return 1.0 return -1.0 ================================================ FILE: credsweeper/ml_model/features/word_in.py ================================================ from abc import abstractmethod from typing import List, Any, Set, Union import numpy as np from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.feature import Feature class WordIn(Feature): """Abstract feature returns array with all matched words in a string""" def __init__(self, words: List[str]): super().__init__() self.dimension = len(words) self.words = sorted(list(set(words))) self.enumerated_words = list(enumerate(self.words)) if len(self.enumerated_words) != self.dimension: raise RuntimeError(f"Check duplicates:{words}") @abstractmethod def extract(self, candidate: Candidate) -> Any: raise NotImplementedError @property def zero(self) -> np.ndarray: """Returns zero filled array for case of empty input""" return np.zeros(shape=[self.dimension], dtype=np.int8) def word_in_(self, iterable_data: Union[str, List[str], Set[str]]) -> np.ndarray: """Returns array with words included in a string""" result: np.ndarray = self.zero for i, word in self.enumerated_words: if word in iterable_data: result[i] = 1 return np.array([result]) ================================================ FILE: credsweeper/ml_model/features/word_in_path.py ================================================ import os.path from pathlib import Path from typing import List, Any import numpy as np from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class WordInPath(WordIn): """Categorical feature that corresponds to words in path (POSIX, lowercase)""" def __call__(self, candidates: List[Candidate]) -> np.ndarray: # actually there must be one path because the candidates are grouped before if file_path := candidates[0].line_data_list[0].path: path = Path(file_path) # apply ./ for normalised path to detect "/src" for relative path posix_lower_path = path.as_posix().lower() if path.is_absolute() else f"./{path.as_posix().lower()}" # prevent extra confusion from the same word in extension path_without_extension, _ = os.path.splitext(posix_lower_path) return self.word_in_(path_without_extension) return np.array([self.zero]) def extract(self, candidate: Candidate) -> Any: raise NotImplementedError ================================================ FILE: credsweeper/ml_model/features/word_in_postamble.py ================================================ import numpy as np from credsweeper.common.constants import ML_HUNK from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class WordInPostamble(WordIn): """Feature is true if line contains at least one word from predefined list.""" def extract(self, candidate: Candidate) -> np.ndarray: """Returns true if any words in a part of line after value""" postamble_end = len(candidate.line_data_list[0].line) \ if len(candidate.line_data_list[0].line) < candidate.line_data_list[0].value_end + ML_HUNK \ else candidate.line_data_list[0].value_end + ML_HUNK postamble = candidate.line_data_list[0].line[candidate.line_data_list[0].value_end:postamble_end].strip() return self.word_in_(postamble.lower()) if postamble else np.array([self.zero]) ================================================ FILE: credsweeper/ml_model/features/word_in_preamble.py ================================================ import numpy as np from credsweeper.common.constants import ML_HUNK from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class WordInPreamble(WordIn): """Feature is true if line contains at least one word from predefined list.""" def extract(self, candidate: Candidate) -> np.ndarray: """Returns true if any words in line before variable or value""" if 0 <= candidate.line_data_list[0].variable_start: preamble_start = 0 if ML_HUNK >= candidate.line_data_list[0].variable_start \ else candidate.line_data_list[0].variable_start - ML_HUNK preamble = candidate.line_data_list[0].line[preamble_start:candidate.line_data_list[0]. variable_start].strip() else: preamble_start = 0 if ML_HUNK >= candidate.line_data_list[0].value_start \ else candidate.line_data_list[0].value_start - ML_HUNK preamble = candidate.line_data_list[0].line[preamble_start:candidate.line_data_list[0].value_start].strip() return self.word_in_(preamble.lower()) if preamble else np.array([self.zero]) ================================================ FILE: credsweeper/ml_model/features/word_in_transition.py ================================================ import numpy as np from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class WordInTransition(WordIn): """Feature is true if line contains at least one word from predefined list.""" def extract(self, candidate: Candidate) -> np.ndarray: """Returns true if any words between variable and value""" if 0 <= candidate.line_data_list[0].variable_end < candidate.line_data_list[0].value_start: transition = candidate.line_data_list[0].line[candidate.line_data_list[0].variable_end:candidate. line_data_list[0].value_start].strip() else: transition = '' return self.word_in_(transition.lower()) if transition else np.array([self.zero]) ================================================ FILE: credsweeper/ml_model/features/word_in_value.py ================================================ import numpy as np from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class WordInValue(WordIn): """Feature returns true if candidate value contains at least one word from predefined list.""" def extract(self, candidate: Candidate) -> np.ndarray: """Returns array of matching words for first line""" if value := candidate.line_data_list[0].value: return self.word_in_(value.lower()) return np.array([self.zero]) ================================================ FILE: credsweeper/ml_model/features/word_in_variable.py ================================================ import numpy as np from credsweeper.credentials.candidate import Candidate from credsweeper.ml_model.features.word_in import WordIn class WordInVariable(WordIn): """Feature returns array of words matching in variable""" def extract(self, candidate: Candidate) -> np.ndarray: """Returns array of matching words for first line""" if variable := candidate.line_data_list[0].variable: return self.word_in_(variable.lower()) return np.array([self.zero]) ================================================ FILE: credsweeper/ml_model/ml_config.json ================================================ { "char_set": "\u001b\t\n\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~", "thresholds": { "lowest": 0.22917, "low": 0.35739, "medium": 0.62204, "high": 0.79791, "highest": 0.92996 }, "features": [ { "type": "RuleSeverity", "comment": "INFO=0.0, LOW=0.25, MEDIUM=0.5, HIGH=0.75, CRITICAL=1.0", "kwargs": {} }, { "type": "EntropyEvaluation", "kwargs": {} }, { "type": "LengthOfAttribute", "kwargs": { "attribute": "line" } }, { "type": "LengthOfAttribute", "kwargs": { "attribute": "variable" } }, { "type": "LengthOfAttribute", "kwargs": { "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "Bash variable", "kwargs": { "pattern": "^\\$([A-Za-z_][0-9A-Za-z_]*|\\{[A-Za-z_][0-9A-Za-z_]*\\})", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "PossibleComment replacing", "kwargs": { "pattern": "^\\s*(#|\\*|/\\*|//|--\\s)", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "Example pattern", "kwargs": { "pattern": "^<[\\w\\s.-]*>", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "Repeated symbol", "kwargs": { "pattern": "(?:(\\S)(\\S))((\\1.)|(.\\2)){7,}", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "SHA marker", "kwargs": { "pattern": "(?i:sha)[_-]?(224|256|384|512)", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "ASN1 prefix for PEM keys", "kwargs": { "pattern": "\\b(MII|LS0t)", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "camelStyle naming detection", "kwargs": { "pattern": "^[a-z][a-z]{1,16}[0-9]*([A-Z]([a-z]{1,16}[0-9]*|[0-9]{1,16})){1,8}$", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "PascalStyle naming detection", "kwargs": { "pattern": "^([A-Z]([a-z]{1,16}[0-9]*|[0-9]{1,16})){1,8}$", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "UPPERCASE naming detection", "kwargs": { "pattern": "^(_+[0-9]{1,16}|_*[A-Z]{1,16}[0-9]*)(_+([0-9]{1,16}|[A-Z]{1,16}[0-9]*)){1,8}_*$", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "lowercase naming detection", "kwargs": { "pattern": "^(_+[0-9]{1,16}|_*[a-z]{1,16}[0-9]*)(_+([0-9]{1,16}|[a-z]{1,16}[0-9]*)){1,8}_*$", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "VariableNotAllowedPatternCheck", "kwargs": { "pattern": "(^(@|<|\\{\\{))|([!><+*/^|)](\\s)?$)", "attribute": "variable" } }, { "type": "SearchInAttribute", "comment": "VariableNotAllowedNameCheck - hash mentioned", "kwargs": { "pattern": "(?i:( h1$|md5|sha[_-]?(224|256|384|512)))", "attribute": "variable" } }, { "type": "SearchInAttribute", "comment": "VariableNotAllowedNameCheck - ID detect", "kwargs": { "pattern": "(guid|[^a-z](?i:u?id)|([^A-Z](G?U)?I[dD])s?)$", "attribute": "variable" } }, { "type": "SearchInAttribute", "comment": "AWS Key ID - true ID", "kwargs": { "pattern": "^A[0-9A-Z]{19,20}$", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "UUID pattern", "kwargs": { "pattern": "^(?i:[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12})$", "attribute": "value" } }, { "type": "SearchInAttribute", "comment": "VariableNotAllowedNameCheck - key rule", "kwargs": { "pattern": "(?i:(?:uniq(?:ue)?|escap(?:e|ing)|resources?|projects?|filters?|pub(?:lic)?)_?keys?)", "attribute": "variable" } }, { "type": "SearchInAttribute", "comment": "VariableNotAllowedNameCheck - word at end", "kwargs": { "pattern": "(?i:(icon|label|mode|field|format|number|sum|size|len(gth)?|name|type|manager|algorithm|pattern|view|error|date(time)?|time(stamp)?|tag|version|hash|rate|code|fingerprint)s?$)", "attribute": "variable" } }, { "type": "SearchInAttribute", "comment": "PWD invocation", "kwargs": { "pattern": "(?i:(^\\$pwd$)|(^\\$\\{#?pwd[^}]*\\}$)|(^\\$\\(pwd\\)$)|(^`pwd`$))", "attribute": "variable" } }, { "type": "WordInVariable", "kwargs": { "words": [ " ", ".", ",", "]", "#", "@", "/", "\\", "!!!", "_at", "_len", "256", "512", "access", "assert", "cache", "client", "control", "crypt", "crypted", "decrypt", "encrypt", "dummy", "disable", "example", "expect", "expir", "fake", "file", "filter", "fingerprint", "guid", "hash", "keyguid", "keyid", "key_id", "label", "length", "md5", "manager", "mock", "name", "native", "obj", "opt", "p/w", "param", "pass", "path", "project", "public", "pw", "query", "secret", "size", "sha", "space", "status", "sword", "temp", "test", "thumbprint", "time", "timestamp", "title", "token", "type", "uniq", "valid", "version", "view" ] } }, { "type": "WordInValue", "kwargs": { "words": [ "%", " ", ":", "=", "$(", "${", "{$", "(", "->", ".", "...", "123", "141592653", "718281828", "<", ">", "[", "_id", "abc", "aaaa", "asdf", "allow", "arn:aws:", "bar", "disable", "changeme", "crypt", "crypted", "decrypt", "edited", "encrypt", "example", "expir", "fake", "file", "foo", "hash", "hex", "key", "min", "mock", "my", "nil", "oprst", "other", "pass", "public", "pwd", "redacted", "rsa", "salt", "secret", "sha", "ssh", "test", "word", "xxx", "xyz" ] } }, { "type": "WordInPreamble", "kwargs": { "words": [ "$", "%2", "%3", "&", "&", "(", "->", ".", "://", "?", "@", "[", "approval", "arn:aws:", "assert", "case", "circle", "color", "e.g.", "equal", "example", "expect", "fake", "false", "height", "image", "line", "media", "nil", "none", "null", "pass", "path", "pwd", "sqa", "test", "true", "undefined", "unit", "where", "width", "word" ] } }, { "type": "WordInTransition", "kwargs": { "words": [ "%2", "%3", "&", "(", "->", "=>", "'", "\"", ".", ",", "?", "@", "[", "{", "basic", "bearer", "get", "e.g.", "equal", "env", "example", "expect", "line", "media", "pass", "password", "path", "test", "unit" ] } }, { "type": "WordInPostamble", "kwargs": { "words": [ "$", "%2", "%3", "&", "&", "(", "->", "'", "\"", ".", "://", "?", "@", "[", "]", "}", "\\", "assert", "case", "circle", "color", "e.g.", "equal", "example", "expect", "fake", "false", "height", "image", "line", "media", "nil", "none", "null", "pass", "path", "pwd", "sqa", "test", "true", "undefined", "unit", "width", "word" ] } }, { "type": "WordInPath", "kwargs": { "words": [ "test", "mock", "/src", "code", "/include", "internal", "tool", "util", "example", "sample", "conf", "secret", "setting", "security", "secure", "resource", "fixture", "docker", "/docs", "/doc/", "document", "/lang", "/local/", "/locale", "/lib", "/spec", "/pkg", "/api", "/rest", "/opt", "/sys", "kube", "kafka", "cluster", "template", "other", "public", "init", "client", "server", "/model", "/modul", "browser", "/env/", "/app", "/assets/", "vendor", "readme", "build", "/dist-packages", "/record", "/script", "/site-packages", "python", "/usr", "/etc", "/fuzz" ] } }, { "type": "MorphemeDense" }, { "type": "HasHtmlTag" }, { "type": "IsSecretNumeric" }, { "type": "FileExtension", "kwargs": { "extensions": [ "", ".04", ".1", ".adoc", ".asciidoc", ".axaml", ".bash", ".bat", ".bats", ".bazel", ".bin", ".build", ".bundle", ".bzl", ".c", ".cast", ".cc", ".cf", ".cjs", ".cljc", ".cmd", ".cnf", ".coffee", ".conf", ".config", ".cpp", ".crt", ".cs", ".csp", ".csv", ".dart", ".dist", ".dockerfile", ".edited", ".eex", ".env", ".erb", ".erl", ".ex", ".example", ".exs", ".ext", ".fsproj", ".g4", ".gml", ".go", ".golden", ".gradle", ".graphql", ".groovy", ".gtpl", ".h", ".haml", ".har", ".hpp", ".hs", ".html", ".idl", ".iml", ".in", ".inc", ".ini", ".ipynb", ".j", ".j2", ".java", ".jenkinsfile", ".js", ".json", ".jsp", ".jsx", ".ks", ".kt", ".kts", ".las", ".ldif", ".ldml", ".less", ".libsonnet", ".lkml", ".lock", ".log", ".lua", ".m", ".manifest", ".markdown", ".markerb", ".md", ".mdx", ".mjs", ".mk", ".ml", ".mlir", ".mod", ".moo", ".ndjson", ".nolint", ".odd", ".onnx", ".oracle", ".original", ".pan", ".patch", ".php", ".pl", ".pm", ".po", ".pod", ".postinst", ".pp", ".ppk", ".proj", ".properties", ".proto", ".ps1", ".purs", ".pxd", ".py", ".pyi", ".pyx", ".r", ".rake", ".rb", ".re", ".response", ".resx", ".rexx", ".rrc", ".rs", ".rsa", ".rsp", ".rst", ".rules", ".sample", ".sbt", ".scala", ".secrets", ".sh", ".snap", ".sql", ".storyboard", ".strings", ".sty", ".swift", ".t", ".td", ".tdf", ".template", ".test", ".testsettings", ".tf", ".tfstate", ".tfvars", ".tl", ".tmpl", ".token", ".toml", ".travis", ".ts", ".tsx", ".txt", ".var", ".vsmdi", ".vue", ".xaml", ".xib", ".xml", ".yaml", ".yml", ".zsh" ] } }, { "type": "RuleName", "kwargs": { "rule_names": [ "API", "Auth", "CMD ConvertTo-SecureString", "CMD Password", "CMD Secret", "CMD Token", "CURL User Password", "Credential", "Key", "Nonce", "Password", "SQL Password", "Salt", "Secret", "Token", "URL Credentials" ] } } ] } ================================================ FILE: credsweeper/ml_model/ml_model.onnx ================================================ [File too large to display: 11.0 MB] ================================================ FILE: credsweeper/ml_model/ml_validator.py ================================================ import hashlib import json import logging from pathlib import Path from typing import List, Tuple, Union, Optional, Dict import numpy as np from onnxruntime import InferenceSession from credsweeper.common.constants import ThresholdPreset, ML_HUNK from credsweeper.credentials.candidate import Candidate from credsweeper.credentials.candidate_key import CandidateKey from credsweeper.ml_model import features from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class MlValidator: """ML validation class""" MAX_LEN = 2 * ML_HUNK # for whole line limit # used for initial fill ZERO_CHAR = '\x00' # applied for unknown characters FAKE_CHAR = '\x01' _dir_path = Path(__file__).parent def __init__( self, # threshold: Union[float, ThresholdPreset], # ml_config: Union[None, str, Path] = None, # ml_model: Union[None, str, Path] = None, # ml_providers: Optional[str] = None) -> None: """Init Args: threshold: decision threshold ml_config: path to ml config ml_model: path to ml model ml_providers: coma separated list of providers https://onnxruntime.ai/docs/execution-providers/ """ self.__session: Optional[InferenceSession] = None if ml_config: ml_config_path = Path(ml_config) else: ml_config_path = MlValidator._dir_path / "ml_config.json" with open(ml_config_path, "rb") as f: __ml_config_data = f.read() model_config = json.loads(__ml_config_data) if ml_model: ml_model_path = Path(ml_model) else: ml_model_path = MlValidator._dir_path / "ml_model.onnx" with open(ml_model_path, "rb") as f: self.__ml_model_data = f.read() if ml_providers: self.providers = ml_providers.split(',') else: self.providers = ["CPUExecutionProvider"] if isinstance(threshold, float): self.threshold = threshold elif isinstance(threshold, ThresholdPreset) and "thresholds" in model_config: self.threshold = model_config["thresholds"][threshold.value] else: self.threshold = 0.5 logger.warning("Use fallback threshold value: %s", self.threshold) char_set = set(model_config["char_set"]) if len(char_set) != len(model_config["char_set"]): logger.warning('Duplicated symbols in "char_set"?') if self.ZERO_CHAR in char_set or self.FAKE_CHAR in char_set: raise ValueError(f'Unacceptable symbols 0x00 or 0x01 in "char_set"={char_set}') self.char_dict = {self.ZERO_CHAR: 0, self.FAKE_CHAR: 1} self.char_dict.update({ char: index for index, char in enumerate(sorted(list(char_set)), start=len(self.char_dict)) }) self.num_classes = len(self.char_dict) self.common_feature_list = [] self.unique_feature_list = [] if logger.isEnabledFor(logging.INFO): config_md5 = hashlib.md5(__ml_config_data).hexdigest() model_md5 = hashlib.md5(self.__ml_model_data).hexdigest() logger.info("Init ML validator with providers: '%s' ; model:'%s' md5:%s ; config:'%s' md5:%s", self.providers, ml_config_path, config_md5, ml_model_path, model_md5) logger.debug(str(model_config)) for feature_definition in model_config["features"]: feature_class = feature_definition["type"] kwargs = feature_definition.get("kwargs", {}) feature_constructor = getattr(features, feature_class, None) if feature_constructor is None: raise ValueError(f"Error while parsing model details. Cannot create feature '{feature_class}'" f" from {feature_definition}") try: feature = feature_constructor(**kwargs) except TypeError: logger.error("Error while parsing model details. Cannot create feature '%s' from %s", feature_class, feature_definition) raise if feature_definition["type"] in ["RuleName"]: self.unique_feature_list.append(feature) else: self.common_feature_list.append(feature) def __reduce__(self): # TypeError: cannot pickle 'onnxruntime.capi.onnxruntime_pybind11_state.InferenceSession' object self.__session = None return super().__reduce__() @property def session(self) -> InferenceSession: """session getter to prevent pickle error""" if not self.__session: self.__session = InferenceSession(self.__ml_model_data, providers=self.providers) if not self.__session: raise RuntimeError("InferenceSession was not initialized!") return self.__session def encode(self, text: str, limit: int) -> np.ndarray: """Encodes prepared text to array""" result_array: np.ndarray = np.zeros(shape=(limit, self.num_classes), dtype=np.float32) if text is None: return result_array for i, c in enumerate(text): if i >= limit: break if c in self.char_dict: result_array[i, self.char_dict[c]] = 1.0 else: result_array[i, self.char_dict[MlValidator.FAKE_CHAR]] = 1.0 return result_array def encode_line(self, text: str, position: int): """Encodes line with balancing for position""" offset = len(text) - len(text.lstrip()) pos = position - offset stripped = text.strip() if MlValidator.MAX_LEN < len(stripped): stripped = Util.subtext(stripped, pos, ML_HUNK) return self.encode(stripped, MlValidator.MAX_LEN) def encode_value(self, text: str) -> np.ndarray: """Encodes line with balancing for position""" stripped = text.strip() return self.encode(stripped[:ML_HUNK], ML_HUNK) def _call_model(self, line_input: np.ndarray, variable_input: np.ndarray, value_input: np.ndarray, feature_input: np.ndarray) -> np.ndarray: input_feed: Dict[str, np.ndarray] = { "line_input": line_input.astype(np.float32), "variable_input": variable_input.astype(np.float32), "value_input": value_input.astype(np.float32), "feature_input": feature_input.astype(np.float32), } result = self.session.run(output_names=None, input_feed=input_feed) if result and isinstance(result[0], np.ndarray): return result[0] raise RuntimeError(f"Unexpected type {type(result[0])}") def extract_common_features(self, candidates: List[Candidate]) -> np.ndarray: """Extract features that are guaranteed to be the same for all candidates on the same line with same value.""" feature_array: np.ndarray = np.array([], dtype=np.float32) # Extract features from credential candidate default_candidate = candidates[0] for feature in self.common_feature_list: new_feature = feature([default_candidate])[0] if not isinstance(new_feature, np.ndarray): new_feature = np.array([new_feature]) feature_array = np.append(feature_array, new_feature) return feature_array def extract_unique_features(self, candidates: List[Candidate]) -> np.ndarray: """Extract features that can be different between candidates. Join them with or operator.""" feature_array: np.ndarray = np.array([], dtype=np.int8) default_candidate = candidates[0] for feature in self.unique_feature_list: new_feature = feature([default_candidate])[0] if not isinstance(new_feature, np.ndarray): new_feature = np.array([new_feature]) feature_array = np.append(feature_array, new_feature) for candidate in candidates[1:]: for feature in self.unique_feature_list: new_feature = feature([candidate])[0] if not isinstance(new_feature, np.ndarray): new_feature = np.array([new_feature]) feature_array = feature_array | new_feature return feature_array def get_group_features(self, candidates: List[Candidate]) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """ `np.newaxis` used to add new dimension if front, so input will be treated as a batch """ # all candidates are from the same line default_candidate = candidates[0] line_input = self.encode_line(default_candidate.line_data_list[0].line, default_candidate.line_data_list[0].value_start)[np.newaxis] variable = '' value = '' for candidate in candidates: if not variable and candidate.line_data_list[0].variable: variable = candidate.line_data_list[0].variable if not value and candidate.line_data_list[0].value: value = candidate.line_data_list[0].value if variable and value: break variable_input = self.encode_value(variable)[np.newaxis] value_input = self.encode_value(value)[np.newaxis] feature_array = self.extract_features(candidates) return line_input, variable_input, value_input, feature_array def extract_features(self, candidates: List[Candidate]) -> np.ndarray: """extracts common and unique features from list of candidates""" common_features = self.extract_common_features(candidates) unique_features = self.extract_unique_features(candidates) feature_hstack = np.hstack([common_features, unique_features]) feature_array = np.array([feature_hstack]) return feature_array def _batch_call_model(self, line_input_list, variable_input_list, value_input_list, features_list) -> np.ndarray: """auxiliary method to invoke twice""" line_inputs_vstack = np.vstack(line_input_list) variable_inputs_vstack = np.vstack(variable_input_list) value_inputs_vstack = np.vstack(value_input_list) feature_array_vstack = np.vstack(features_list) result_call = self._call_model(line_inputs_vstack, variable_inputs_vstack, value_inputs_vstack, feature_array_vstack) result = result_call[:, 0] return result def validate_groups(self, group_list: List[Tuple[CandidateKey, List[Candidate]]], batch_size: int) -> Tuple[np.ndarray, np.ndarray]: """Use ml model on list of candidate groups. Args: group_list: List of tuples (value, group) batch_size: ML model batch Return: Boolean numpy array with decision based on the threshold, and numpy array with probability predicted by the model """ line_input_list = [] variable_input_list = [] value_input_list = [] features_list = [] probability: np.ndarray = np.zeros(len(group_list), dtype=np.float32) head = tail = 0 for _group_key, candidates in group_list: line_input, variable_input, value_input, feature_array = self.get_group_features(candidates) line_input_list.append(line_input) variable_input_list.append(variable_input) value_input_list.append(value_input) features_list.append(feature_array) tail += 1 if 0 == tail % batch_size: # use the approach to reduce memory consumption for huge candidates list probability[head:tail] = self._batch_call_model(line_input_list, variable_input_list, value_input_list, features_list) head = tail line_input_list.clear() variable_input_list.clear() value_input_list.clear() features_list.clear() if head != tail: probability[head:tail] = self._batch_call_model(line_input_list, variable_input_list, value_input_list, features_list) is_cred = self.threshold <= probability if logger.isEnabledFor(logging.DEBUG): for i, decision in enumerate(is_cred): logger.debug("ML decision: %s with prediction: %s for value: %s", decision, probability[i], group_list[i][0]) # apply cast to float to avoid json export issue return is_cred, probability.astype(float) ================================================ FILE: credsweeper/py.typed ================================================ ================================================ FILE: credsweeper/rules/__init__.py ================================================ ================================================ FILE: credsweeper/rules/config.yaml ================================================ - name: DOC_GET severity: medium confidence: moderate type: pattern values: - (?P(\w*(?i:비밀번호|비번|패스워드|키|암호화?|토큰|(?(\\*([\"']|&(quot|apos|#3[49]);)){1,4})(?P(.(?!(?P=lq))){4,8000}.?) filter_type: - ValueAllowlistCheck - ValueBlocklistCheck - LineGitBinaryCheck - LineUUEPartCheck - ValueFilePathCheck - ValuePatternCheck(5) min_line_len: 8 required_substrings: - pass - pw - token - secret - key - cred - 비밀번호 - 비번 - 패스워드 - 암호 - 키 - 토큰 target: - doc use_ml: true - name: DOC_CREDENTIALS severity: medium confidence: moderate type: pattern values: - (?P[\"'`(])?\s*(?P(\w*(?i:(?설정은|:=|:(?!:)|=(>|>|(\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=|%3[Dd])\s*)(?P[\"'`]{1,6})?(?P(?(quote)(?(wrap)[^\"'`)]{4,8000}|[^\"'`]{4,8000})|(?(wrap)[^\"'`)]{4,8000}|\S{4,8000}))) filter_type: - ValueAllowlistCheck - ValueBlocklistCheck - LineGitBinaryCheck - LineUUEPartCheck - ValueFilePathCheck - ValuePatternCheck(5) - ValueSealedSecretCheck min_line_len: 8 required_substrings: - pass - sword - pw - p/w - paasw - 비밀번호 - 비번 - 패스워드 - 암호 - token - secret - key - credential - 키 - 토큰 target: - doc use_ml: true - name: SECRET_PAIR severity: medium confidence: moderate type: pattern values: - (?P[\"'`]?(?i:token|secret|key|키|암호화?|토큰)[\"'`]?)((\s)*(?P설정은|:=|:(?!:)|=(>|>|(\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=|%3[Dd])(\s)*)(?P[\"'`(])?(?P(?-i:(?P
    [A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){8,80}(?(a)(?(b)(?(c)((?(quote)[^)\"'`]{1,8000}|([0-9A-Za-z/_+=~!@#$%^&*;:?-]{1,8000}|\b))|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)[)\"'`]) filter_type: - ValueAllowlistCheck - ValuePatternCheck(4) - ValueEntropyBase64Check - ValueMorphemesCheck - ValueSealedSecretCheck min_line_len: 16 required_substrings: - token - secret - key - 키 - 암호 - 토큰 target: - doc use_ml: true - name: PASSWD_PAIR severity: medium confidence: moderate type: pattern values: - (?P[\"'`]?(?i:(?설정은|:=|:(?!:)|=(>|>|(\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=|%3[Dd])(\s)*)(?P[\"'`(])?(?P(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){8,64}(?(a)(?(b)(?(c)((?(quote)[^)\"'`]{1,8000}|([0-9A-Za-z/_+=~!@#$%^&*;:?-]{1,8000}|\b))|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)[)\"'`]) filter_type: - ValueAllowlistCheck - ValuePatternCheck(4) - ValueDictionaryKeywordCheck - LineGitBinaryCheck - LineUUEPartCheck - ValueFilePathCheck - ValueHexNumberCheck - ValueSealedSecretCheck min_line_len: 10 required_substrings: - pass - sword - pw - p/w - paasw - 비밀번호 - 비번 - 패스워드 - 암호 target: - doc use_ml: true - name: IP_ID_PASSWORD_TRIPLE severity: medium confidence: moderate type: pattern values: - (^|\s|(?P(?i:\bip[\s/]{1,80}id[\s/]{1,80}pw[\s/:]{0,80}))|(?P://))(?P(?(?(url)(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9_+=~!@#$%^&*;?-])){7,64}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)|(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;?-])){7,64}(?(e)(?(f)(?(g)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)))(?:\s|[^/]|$) filter_type: - ValueAllowlistCheck - ValuePatternCheck(4) - ValueDictionaryKeywordCheck min_line_len: 10 required_substrings: - "." target: - doc use_ml: true - name: ID_PAIR_PASSWD_PAIR severity: medium confidence: moderate type: pattern values: - (?P--)?(?P\w*(?i:pa[as]swords?|passwd?|pwd|\bp/w|\bpw|비밀번호|비번|패스워드|암호))\s*?(?(ddash)[ =]|[:=/>-]{1,2})\s*(?P[\"'`]{1,8})?(?P(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){4,64}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)(?P=quote)|(\s|$)) - (?P--)?(?P(?i:user\s*)?(?i:id|login|account|root|admin|user|name|wifi|role|host|default|계정|아이디))\s*?(?(ddash)[ =]|[ :=])\s*?(?P\S+) filter_type: - ValueAllowlistCheck - ValuePatternCheck(4) min_line_len: 10 required_substrings: - pass - sword - p/w - pw - 비밀번호 - 비번 - 패스워드 - 암호 target: - doc use_ml: true - name: ID_PASSWD_PAIR severity: medium confidence: moderate type: pattern values: - (?P[\w.-]{0,80}(?i:(?P\bid\b)|id\b|user|name|계정|아이디)[\w.-]{0,80}(?(id)[ :(/]{1,80}|[:(/]{1,80})(?i:pa[as]swo?r?ds?|pwd?|비밀번호|비번|패스워드|암호))\)?(\s*->\s*|[ =:)(/]{1,80}|\s+is\s+|\s+are\s+|\s*는\s*|\s*은\s*|\s*설정은\s*)\(?(?P[\w.-]{2,64})[ :\(/\"',]{1,80}(?P(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){4,64}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)) filter_type: - ValueAllowlistCheck - ValuePatternCheck(4) - ValueDictionaryKeywordCheck min_line_len: 10 required_substrings: - pw - pass - sword - 비밀번호 - 비번 - 패스워드 - 암호 target: - doc use_ml: true - name: UUID severity: info confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[0-9A-F]{8}(-[0-9A-F]{4}){3}-[0-9A-F]{12}|[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12})(?![0-9A-Za-z_+-]) min_line_len: 36 required_substrings: - "-" filter_type: - ValuePatternCheck(4) use_ml: false target: - code - doc - name: Akamai Credentials severity: high confidence: strong type: pattern values: - (?Pakab-[0-9a-z]{16}-[0-9a-z]{16})(?!\.[0-9a-z-]{1,80}\.akamaiapis\.net) filter_type: GeneralPattern required_substrings: - akab- min_line_len: 38 target: - code - doc - name: Amazon Bedrock API Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P(ABSK|bedrock-api-key-)[0-9A-Za-z/+]{28,800})(?![0-9A-Za-z/+]) filter_type: GeneralPattern required_substrings: - ABSK - bedrock-api-key- min_line_len: 44 target: - code - doc - name: AWS Client ID severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P(A3T[0-9A-Z]|ABIA|ACCA|AGPA|AIDA|AIPA|AKIA|ANPA|ANVA|AROA|APKA|ASCA|ASIA)[0-9A-Z]{16,17})(?![0-9A-Za-z_+-]) filter_type: GeneralPattern required_substrings: - A3T - ABIA - ACCA - AGPA - AIDA - AIPA - AKIA - ANPA - ANVA - AROA - APKA - ASCA - ASIA min_line_len: 20 required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc - name: AWS Multi severity: high confidence: moderate type: multi values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?PA(KIA|SIA)[0-9A-Z]{16})(?![0-9A-Za-z_]) - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P((?P[A-Z])|(?P[a-z])|(?P[0-9/+])){40,44}(?(a)(?(b)(?(c)\b|(?!x)x)|(?!x)x)|(?!x)x))(?![0-9A-Za-z/+]) filter_type: - LineSpecificKeyCheck - ValuePatternCheck - ValueBase64PartCheck - ValueMorphemesCheck required_substrings: - AKIA - ASIA min_line_len: 20 required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc - name: AWS MWS Key severity: high confidence: strong type: pattern values: - (?Pamzn\.mws\.[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12})(?![0-9A-Za-z_-]) filter_type: GeneralPattern required_substrings: - amzn.mws. min_line_len: 30 target: - code - doc - name: Dynatrace API Token severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pdt0[A-Za-z]{1}[0-9]{2}\.[0-9A-Z]{24}\.[0-9A-Z]{64})(?![0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - dt0 min_line_len: 90 target: - code - doc - name: Facebook Access Token severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?PEAA[0-9A-Za-z]{80,800}) filter_type: - ValuePatternCheck - ValueBase64PartCheck - ValueNotPartEncodedCheck required_substrings: - EAA min_line_len: 80 target: - code - doc - name: Facebook App Token severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[0-9]{12,18}\|[0-9A-Za-z_-]{24,28})(?![0-9A-Za-z_+-]) filter_type: TokenPattern required_substrings: - "|" required_regex: "[0-9A-Za-z_/+-]{15}" min_line_len: 33 target: - code - doc - name: Google API Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?PAIza[0-9A-Za-z_-]{35}) filter_type: TokenPattern required_substrings: - AIza min_line_len: 39 target: - code - doc - name: Google Multi severity: high confidence: moderate type: multi values: - (?P[0-9]{3,80}-[0-9a-z_]{32}\.apps\.googleusercontent\.com) - \b(?PGOCSPX-[0-9A-Za-z_-]{28}|((?P[A-Z])|(?P[a-z])|(?P[0-9_-])){24,80}(?(a)(?(b)(?(c)\b|(?!x)x)|(?!x)x)|(?!x)x)) filter_type: GeneralPattern required_substrings: - .apps.googleusercontent.com min_line_len: 40 target: - code - doc - name: Google OAuth Secret severity: high confidence: strong type: pattern values: - (?PGOCSPX-[0-9A-Za-z_-]{28})(?![0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - GOCSPX- min_line_len: 40 target: - code - doc - name: Google OAuth Access Token severity: high confidence: moderate type: pattern values: - (?Pya29\.[0-9A-Za-z_-]{22,8000}) filter_type: TokenPattern required_substrings: - ya29. min_line_len: 27 target: - code - doc - name: Google OAuth Refresh Token severity: medium confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P1//0[0-9A-Za-z_-]{80,8000}) filter_type: TokenPattern required_substrings: - 1//0 min_line_len: 84 target: - code - doc - name: Heroku Credentials severity: high confidence: strong type: pattern values: - (?PHRKU-([0-9A-Za-z_-]{60}|[0-9A-Fa-f]{8}(-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12})) filter_type: TokenPattern required_substrings: - HRKU- min_line_len: 41 target: - code - doc - name: Instagram Access Token severity: high confidence: strong type: pattern values: - (?PIGQVJ[=0-9A-Za-z_-]{100,8000})(?![=0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - IGQVJ min_line_len: 105 target: - code - doc - name: JSON Web Token severity: medium confidence: strong type: pattern values: - (?PeyJ[=0-9A-Za-z_+/-]{15,8000}(\.[=0-9A-Za-z_+/-]{0,8000}){2,16})(?![=0-9A-Za-z_-]) filter_type: - ValueJsonWebTokenCheck required_substrings: - eyJ min_line_len: 64 target: - code - doc - name: JSON Web Key severity: medium confidence: strong type: pattern values: - (?P\b(e(yJ|yAi|woi|wog|w0K)|W(yJ|3si|wp7|wog|w0K|3sK))[0-9A-Za-z_+/-]{60,8000}) filter_type: - ValueJsonWebKeyCheck required_substrings: - eyJ - eyAi - ewoi - ewog - ew0K - WyJ - W3si - Wwp7 - Wwog - Ww0K - W3sK min_line_len: 64 target: - code - doc - name: JWK severity: medium confidence: moderate type: multi values: - (?P['"]?\b(?Pkty)[^0-9A-Za-z_-]{1,8}(RSA|EC|oct)\b['"]?) - (?P\b[dk])[^0-9A-Za-z_-]{1,8}(?P[0-9A-Za-z_-]{22,8000})(?![=0-9A-Za-z_-]) filter_type: - ValuePatternCheck - ValueMorphemesCheck required_substrings: - kty min_line_len: 8 target: - code - doc - name: MailChimp API Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[0-9A-Za-z_-]{32}-us[0-9]{1,2})(?![0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - -us min_line_len: 35 target: - code - doc - name: MailGun API Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pkey-[0-9a-z]{32}|[0-9a-f]{32}-[0-9a-f]{8}-[0-9a-f]{8})(?![0-9A-Za-z_-]) filter_type: TokenPattern required_regex: "[0-9A-Za-z_/+-]{15}" min_line_len: 36 target: - code - doc - name: PayPal Braintree Access Token severity: high confidence: strong type: pattern values: - (?Paccess_token\$production\$[0-9a-z]{16}\$[0-9a-z]{32})(?![0-9A-Za-z_-]) filter_type: GeneralPattern required_substrings: - access_token$production$ min_line_len: 72 target: - code - doc - name: PEM Private Key severity: high confidence: strong type: pem_key values: - (?P-----BEGIN(?![^-]*ENCRYPTED)[^-]*PRIVATE[^-]*KEY[^-]*-----) min_line_len: 27 target: - code - doc - name: BASE64 encoded PEM Private Key severity: high confidence: strong type: pattern values: - (?P[0-9A-Za-z_/+-]{0,8000}LS0t(LS1CRUdJTiB|LUJFR0lOI|QkVHSU4g)[0-9A-Za-z_/+-]{0,11}(UFJJVkFURSBLRVkt|QUklWQVRFIEtFWS0t|FBSSVZBVEUgS0VZ)[0-9A-Za-z_/+-]{1,8000}LS0t[0-9A-Za-z_/+-]{1,8000}) filter_type: - ValueBase64EncodedPem min_line_len: 300 required_substrings: - UFJJVkFURSBLRVkt - QUklWQVRFIEtFWS0t - FBSSVZBVEUgS0VZ target: - code - doc - name: BASE64 Private Key severity: high confidence: strong type: pattern values: - (?PMII[A-Za-f][0-9A-Za-z/+]{8}(?s:[^!#$&()*\-.:;<=>?@\[\]^_{|}~]{8,8000})) filter_type: - ValueBase64KeyCheck min_line_len: 160 required_substrings: - MII target: - code - doc - name: Picatic API Key severity: high confidence: strong type: pattern values: - (?Psk_live_[0-9a-z]{32})(?![0-9A-Za-z_-]) filter_type: GeneralPattern required_substrings: - sk_live_ min_line_len: 40 target: - code - doc - name: SendGrid API Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?PSG\.[0-9A-Za-z_-]{16,32}\.[0-9A-Za-z_-]{16,64}) filter_type: TokenPattern required_substrings: - SG. min_line_len: 34 target: - code - doc - name: Shopify Token severity: high confidence: strong type: pattern values: - (?Pshp(at|ca|pa|ss|tka)_[0-9A-Fa-f]{32})(?![0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - shp min_line_len: 38 target: - code - doc - name: Slack Token severity: high confidence: strong type: pattern values: - (?P(xapp|xox[a-z])\-[0-9A-Za-z-]{10,250})(?![0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - xox - xapp min_line_len: 15 target: - code - doc - name: Slack Webhook severity: medium confidence: strong type: pattern values: - (?Phooks\.slack\.com/services)(?P/T[0-9A-Z]{8,16}/B[0-9A-Z]{8,16}/[0-9A-Za-z_]{24}) filter_type: GeneralPattern required_substrings: - hooks.slack.com/services/T min_line_len: 61 target: - code - doc - name: Stripe Credentials severity: high confidence: strong type: pattern values: - (?P(whsec|[prs]k_(test|live))_[0-9A-Za-z]{24,160}) filter_type: GeneralPattern required_substrings: - k_live_ - k_test_ - whsec_ min_line_len: 32 target: - code - doc - name: Square Access Token severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?PEAAA[0-9A-Za-z_-]{60})(?![0-9A-Za-z_-]) filter_type: - ValuePatternCheck - ValueBase64PartCheck required_substrings: - EAAA min_line_len: 64 target: - code - doc - name: Square Credentials severity: medium confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Psq0[a-z]{3}-[0-9A-Za-z_-]{22}([0-9A-Za-z_-]{21})?)(?![0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - sq0 min_line_len: 29 target: - code - doc - name: Twilio Credentials severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P(AC|AD|AL|CA|CF|CL|CN|CR|FW|IP|KS|MM|NO|PK|PN|QU|RE|SC|SD|SK|SM|TR|UT|XE|XR)[0-9A-Fa-f]{32})(?![0-9A-Za-z_+-]) filter_type: TokenPattern required_substrings: - AC - AD - AL - CA - CF - CL - CN - CR - FW - IP - KS - MM - "NO" - PK - PN - QU - RE - SC - SD - SK - SM - TR - UT - XE - XR min_line_len: 34 target: - code - doc - name: Telegram Bot API Token severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[0-9]{8,10}:[0-9A-Za-z_-]{35})(?![0-9A-Za-z_-]) filter_type: TokenPattern required_substrings: - :AA min_line_len: 45 target: - code - doc - name: PyPi API Token severity: high confidence: strong type: pattern values: - (?Ppypi-[0-9A-Za-z_-]{150,255}) filter_type: TokenPattern required_substrings: - pypi- min_line_len: 155 target: - code - doc - name: NPM Token severity: high confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pnpm_[0-9A-Za-z_-]{36,255}) filter_type: - ValueGitHubCheck required_substrings: - npm_ min_line_len: 40 target: - code - doc - name: Github Classic Token severity: high confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pgh[pousr]_[0-9A-Za-z_-]{36,255}) filter_type: - ValueGitHubCheck required_substrings: - ghp_ - gho_ - ghu_ - ghs_ - ghr_ min_line_len: 40 target: - code - doc - name: Github Fine-granted Token severity: high confidence: strong type: pattern values: - (?Pgithub_pat_[0-9A-Za-z_]{80,255}) filter_type: GeneralPattern required_substrings: - github_pat_ min_line_len: 90 target: - code - doc - name: Firebase Domain severity: info confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[a-z0-9.-]{1,80}\.firebaseio\.com|[a-z0-9.-]{1,80}\.firebaseapp\.com) filter_type: GeneralPattern required_substrings: - .firebase min_line_len: 16 target: - code - doc - name: AWS S3 Bucket severity: info confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[a-z0-9.-]{3,63}\.s3\.amazonaws\.com|[a-z0-9.-]{3,63}\.s3-website[.-](eu|ap|us|ca|sa|cn)) filter_type: GeneralPattern required_substrings: - .s3-website - .s3.amazonaws.com min_line_len: 14 target: - code - doc - name: Jfrog Token severity: high confidence: strong type: pattern values: - (?P(cmVmdGtuO[0-9A-Za-z_-]{55}|AKCp[0-9A-Za-z_-]{69}))(?![0-9A-Za-z_-]) filter_type: - ValueJfrogTokenCheck required_substrings: - cmVmdGtuO - AKCp min_line_len: 64 target: - code - doc - name: Azure Access Token severity: high confidence: strong type: pattern values: - (?PeyJ[=0-9A-Za-z_-]{50,500}\.eyJ[=0-9A-Za-z_-]{8,8000}\.[=0-9A-Za-z_-]{18,800}) filter_type: - ValueAzureTokenCheck required_substrings: - eyJ min_line_len: 148 target: - code - doc - name: Azure Secret Value severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[0-9A-Za-z_~.-]{3}8Q~[0-9A-Za-z_~.-]{34})(?![0-9A-Za-z_-]) filter_type: TokenPattern min_line_len: 40 required_substrings: - 8Q~ target: - code - doc - name: Azure Storage Account Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[0-9A-Za-z]{52}JQQJ9[9DH][0-9A-Za-z]{26}([0-9A-Za-z=]{4})?)(?![0-9A-Za-z_/+-]) min_line_len: 80 filter_type: - ValuePatternCheck(17) required_substrings: - JQQJ99 - JQQJ9D - JQQJ9H target: - code - doc - name: Bitbucket App Password severity: high confidence: strong type: pattern values: - (?PATBB[0-9A-Za-z]{24}[A-F0-9]{8})(?![0-9A-Za-z_]) filter_type: - ValueAtlassianTokenCheck min_line_len: 28 required_substrings: - ATBB target: - code - doc - name: Bitbucket Repository Access Token severity: high confidence: strong type: pattern values: - (?PATCTT3xFfGN0[0-9A-Za-z_-]{80,800}(\\?=|%3[dD])[A-F0-9]{8}) filter_type: - ValueAtlassianTokenCheck min_line_len: 160 required_substrings: - ATCTT3xFfGN0 target: - code - doc - name: Bitbucket HTTP Access Token severity: high confidence: strong type: pattern values: - (?PBBDC-[MNO][ADQTgjwz][AEIMQUYcgk][012345wxyz][0-9A-Za-z_-]{40}) filter_type: - ValueAtlassianTokenCheck min_line_len: 49 required_substrings: - BBDC- target: - code - doc - name: Jira / Confluence PAT token severity: high confidence: strong type: pattern values: - (?[MNO][ADQTgjwz][AEIMQUYcgk][012345wxyz][0-9A-Za-z_-]{40})(?![0-9A-Za-z_-]) filter_type: - ValueAtlassianTokenCheck min_line_len: 44 required_substrings: - M - N - O required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc - name: Atlassian PAT token severity: high confidence: strong type: pattern values: - (?PATATT3xFfGF0[0-9A-Za-z_-]{80,800}(\\?=|%3[dD])[A-F0-9]{8}) filter_type: - ValueAtlassianTokenCheck min_line_len: 160 required_substrings: - ATATT3xFfGF0 target: - code - doc - name: Digital Ocean Token severity: high confidence: strong type: pattern values: - (?Pdo[opr]_v1_[a-f0-9]{64})(?![0-9A-Za-z_-]) filter_type: TokenPattern min_line_len: 71 required_substrings: - doo_v1_ - dop_v1_ - dor_v1_ target: - code - doc - name: Dropbox OAuth2 API Access Token severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Psl\.(u\.)?[0-9A-Za-z_-]{77,177})(?![0-9A-Za-z_-]) filter_type: TokenPattern min_line_len: 80 required_substrings: - sl. target: - code - doc - name: NuGet API key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Poy2[a-z0-9]{43})(?![0-9A-Za-z_-]) filter_type: TokenPattern min_line_len: 46 required_substrings: - oy2 target: - code - doc - name: Gitlab Prefix Token severity: high confidence: strong type: pattern values: - (?P(_gitlab_session=|GR1348941|gl(agent|soat|ffct|p[at]t|oas|cbt|imt|rtr|[dfrw]t)-)[0-9A-Za-z_-]{20,64}(\.[0-9A-Za-z_-]{2,16}){0,2})(?![0-9A-Za-z_-]) filter_type: - ValuePatternCheck min_line_len: 25 required_substrings: - _gitlab_session= - GR1348941 - glagent- - glsoat- - glffct- - glpat- - gloas- - glptt- - glcbt- - glimt- - gldt- - glft- - glrt- - glrtr- - glwt- target: - code - doc - name: Grafana Provisioned API Key severity: high confidence: strong type: pattern values: - (?PeyJ[=0-9A-Za-z_-]{64,360})(?![=0-9A-Za-z_-]) filter_type: - ValueGrafanaCheck min_line_len: 67 required_substrings: - eyJ target: - code - doc - name: Grafana Access Policy Token severity: high confidence: strong type: pattern values: - (?Pglc_eyJ[0-9A-Za-z_-]{80,360})(?![0-9A-Za-z_-]) filter_type: - ValueGrafanaCheck min_line_len: 87 required_substrings: - glc_eyJ target: - code - doc - name: Grafana Service Account Token severity: high confidence: strong type: pattern values: - (?Pglsa_[0-9A-Za-z_-]{32}_[0-9A-Fa-f]{8}) min_line_len: 46 filter_type: - ValueGrafanaServiceCheck required_substrings: - glsa_ target: - code - doc - name: Dropbox API secret (long term) severity: high confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?=[0-9A-Za-z]{64})(?P[0-9A-Za-z]{10,12}[B-Za-z0-9]A{10,12}[B-Za-z0-9][0-9A-Za-z]{40,44})(?![=0-9A-Za-z_/+-]) filter_type: [ ] min_line_len: 43 required_substrings: - AAAAAAAAAA target: - code - doc - name: Dropbox App secret severity: info confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P[a-z0-9]{15})(?![=0-9A-Za-z_/+-]) filter_type: WeirdBase36Token min_line_len: 15 required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc - name: Hashicorp Vault Token severity: high confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Phv[brs]\.[0-9A-Za-z_-]{80,160}) filter_type: - ValuePatternCheck - ValueEntropyBase64Check min_line_len: 90 required_substrings: - hvb. - hvr. - hvs. target: - code - doc - name: Hashicorp Terraform Token severity: high confidence: strong type: pattern values: - (?P[0-9A-Za-z_-]{14}\.atlasv1\.[0-9A-Za-z_-]{67})(?![0-9A-Za-z_-]) filter_type: - ValuePatternCheck - ValueMorphemesCheck min_line_len: 90 required_substrings: - .atlasv1. target: - code - doc - name: NKEY Seed severity: high confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?PS[ACNOPUX][A-Z2-7]{40,200})(?![=0-9A-Za-z_+-]) min_line_len: 42 filter_type: - ValueMorphemesCheck - ValuePatternCheck - ValueEntropyBase32Check - ValueBase32DataCheck - ValueTokenBase32Check required_substrings: - SA - SC - SN - SO - SP - SU - SX required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc - name: OTP / 2FA Secret severity: info confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P([A-Z2-7]{16}){1,2})(?![=0-9A-Za-z_+-]) filter_type: - ValueMorphemesCheck - ValuePatternCheck - ValueEntropyBase32Check - ValueBase32DataCheck - ValueTokenBase32Check - ValueBase64PartCheck min_line_len: 16 required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc - name: OpenAI Token severity: high confidence: strong type: pattern values: - (?Psk-[0-9A-Za-z_-]{16,160}(T3BlbkFJ|9wZW5BS|PcGVuQU)[0-9A-Za-z_-]{16,160}) min_line_len: 51 filter_type: - ValuePatternCheck - ValueMorphemesCheck required_substrings: - T3BlbkFJ - 9wZW5BS - PcGVuQU target: - code - doc - name: Docker Access Token severity: high confidence: strong type: pattern values: - (?Pdckr_[op]at_[0-9A-Za-z_-]{27,32}) min_line_len: 36 filter_type: - ValuePatternCheck - ValueMorphemesCheck required_substrings: - dckr_pat_ - dckr_oat_ target: - code - doc - name: Docker Swarm Token severity: high confidence: strong type: pattern values: - (?PSWMTKN-1-[0-9a-z]{50}-[0-9a-z]{25}) min_line_len: 85 filter_type: - ValuePatternCheck - ValueMorphemesCheck required_substrings: - SWMTKN-1- target: - code - doc - name: Docker Swarm Key severity: high confidence: strong type: pattern values: - (?PSWMKEY-1-[0-9A-Za-z]{43}) min_line_len: 52 filter_type: - ValuePatternCheck - ValueMorphemesCheck required_substrings: - SWMKEY-1- target: - code - doc - name: Groq API Key severity: high confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pgsk_[0-9A-Za-z_-]{8,40}(WGdyb3FY|hncm9xW|YZ3JvcV)[0-9A-Za-z_-]{8,40})(?![0-9A-Za-z_-]) min_line_len: 56 filter_type: - ValuePatternCheck required_substrings: - WGdyb3FY - hncm9xW - YZ3JvcV target: - code - doc - name: X AI API Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pxai-[0-9A-Za-z_-]{80})(?![0-9A-Za-z_-]) min_line_len: 84 filter_type: - ValuePatternCheck - ValueEntropyBase64Check required_substrings: - xai- target: - code - doc - name: Notion Integration Token severity: high confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pntn_[0-9]{9}[0-9A-Za-z_-]{36,255}) filter_type: - ValuePatternCheck - ValueEntropyBase64Check required_substrings: - ntn_ min_line_len: 50 target: - code - doc - name: Hugging Face User Access Token severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Phf_[0-9A-Za-z_-]{34})(?![0-9A-Za-z_-]) min_line_len: 37 filter_type: - ValuePatternCheck - ValueEntropyBase64Check required_substrings: - hf_ target: - code - doc - name: Anthropic API Key severity: high confidence: strong type: pattern values: - (?Psk-ant-api03-[0-9A-Za-z_-]{64,128})(?![0-9A-Za-z_-]) min_line_len: 77 filter_type: - ValuePatternCheck required_substrings: - sk-ant-api03- target: - code - doc - name: Perplexity API Key severity: high confidence: strong type: pattern values: - (?Ppplx-[0-9A-Za-z_-]{40,64})(?![0-9A-Za-z_-]) min_line_len: 45 filter_type: - ValuePatternCheck required_substrings: - pplx- target: - code - doc - name: DeepSeek API Key severity: high confidence: moderate type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Psk-[0-9a-f]{32,64})(?![0-9A-Za-z_-]) min_line_len: 35 filter_type: - ValuePatternCheck required_substrings: - sk- target: - code - doc - name: Tavily API Key severity: high confidence: strong type: pattern values: - (?Ptvly-[0-9A-Za-z_-]{32,40})(?![0-9A-Za-z_-]) min_line_len: 37 filter_type: - ValuePatternCheck required_substrings: - tvly- target: - code - doc - name: Figma Personal Access Token severity: high confidence: strong type: pattern values: - (?Pfigd_[0-9A-Za-z_-]{40})(?![0-9A-Za-z_-]) min_line_len: 45 filter_type: - ValuePatternCheck required_substrings: - figd_ target: - code - doc - name: 1Password Account Token severity: high confidence: strong type: pattern values: - (?Pops_eyJ[0-9A-Za-z_-]{168,8000}) min_line_len: 192 filter_type: - ValuePatternCheck required_substrings: - InNlY3JldEtleSI6 - JzZWNyZXRLZXkiO - ic2VjcmV0S2V5Ij target: - code - doc - name: Brevo API Key severity: high confidence: strong type: pattern values: - (?Pxkeysib-[0-9a-f]{64}-[0-9A-Za-z_-]{16}) min_line_len: 89 filter_type: - ValuePatternCheck required_substrings: - xkeysib- target: - code - doc - name: Together AI API Key severity: high confidence: strong type: pattern values: - (?Ptgp_v1_[0-9A-Za-z_-]{43}) min_line_len: 50 filter_type: - ValuePatternCheck required_substrings: - tgp_v1_ target: - code - doc - name: LLAMA API Key severity: high confidence: strong type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pllx-[0-9A-Za-z_-]{48}) min_line_len: 52 filter_type: - ValuePatternCheck required_substrings: - llx- target: - code - doc - name: SonarQube Credentials severity: medium confidence: moderate type: pattern values: - (?Psq[apu]_[0-9a-f]{40})(?![0-9A-Za-z_-]) min_line_len: 44 filter_type: - ValuePatternCheck required_substrings: - sqa_ - sqp_ - squ_ target: - code - doc - name: Sentry Organization Auth Token severity: high confidence: strong type: pattern values: - (?Psntrys_eyJ[0-9A-Za-z_-]{80,8000}=*([0-9A-Za-z_-]{32,256})?)(?![0-9A-Za-z_-]) min_line_len: 37 filter_type: - ValuePatternCheck required_substrings: - sntrys_eyJ target: - code - doc - name: Sentry User Auth Token severity: high confidence: strong type: pattern values: - (?Psntryu_[0-9a-f]{64})(?![0-9A-Za-z_-]) min_line_len: 37 filter_type: - ValuePatternCheck required_substrings: - sntryu_ target: - code - doc - name: Discord Bot Token severity: high confidence: strong type: pattern values: - (?P[MNO][ADQTgjwz][AEIMQUYcgk][012345wxyz][0-9A-Za-z_-]{20,24}\.[0-9A-Za-z_-]{6}\.[0-9A-Za-z_-]{30,40})(?![0-9A-Za-z_-]) min_line_len: 62 filter_type: - ValueDiscordBotCheck required_substrings: - M - N - O required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc - name: Discord Webhook severity: medium confidence: strong type: pattern values: - (?Pdiscord(?:app)?\.com/api/webhooks)(?P/[0-9]{16,22}/[0-9A-Za-z_-]{40,100}) filter_type: - ValueMorphemesCheck required_substrings: - discordapp.com/api/webhooks - discord.com/api/webhooks min_line_len: 61 target: - code - doc - name: Vercel Token severity: medium confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pvcp_[0-9A-Za-z]{56})(?![0-9A-Za-z_-]) min_line_len: 60 filter_type: TokenPattern required_substrings: - vcp_ target: - code - doc - name: Netlify Token severity: medium confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pnfp_[0-9A-Za-z]{36})(?![0-9A-Za-z_-]) min_line_len: 40 filter_type: TokenPattern required_substrings: - nfp_ target: - code - doc - name: PostHog Credentials severity: medium confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pph[acrsx]_[0-9A-Za-z]{40,60})(?![0-9A-Za-z_-]) min_line_len: 44 filter_type: TokenPattern required_substrings: - phx_ - phs_ - phr_ - pha_ - phc_ target: - code - doc - name: RubyGems API Key severity: medium confidence: strong type: pattern values: - (?Prubygems_[0-9a-f]{48}) min_line_len: 57 filter_type: TokenPattern required_substrings: - rubygems_ target: - code - doc - name: Tencent WeChat API App ID severity: medium confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?Pwx[0-9a-f]{16})(?![0-9A-Za-z_-]) min_line_len: 18 filter_type: TokenPattern required_substrings: - wx target: - code - doc - name: Salesforce Credentials severity: medium confidence: weak type: pattern values: - (?:^|/|[^\\0-9A-Za-z+_-]|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P(3MVG[0-9A-Za-z_.]{24,200}|00D[0-9A-Za-z]{9,15}(![0-9A-Za-z_.]{24,200})?))(?![0-9A-Za-z_.]) min_line_len: 12 filter_type: - ValuePatternCheck(9) - ValueNumberCheck - ValueBase64PartCheck required_substrings: - 00D - 3MVG target: - code - doc - name: Postman Credentials severity: medium confidence: moderate type: pattern values: - (?P(PMAK-[0-9a-f]{24}-[0-9a-f]{34}|PMAT-[0-9A-Z]{26})) min_line_len: 29 filter_type: - ValuePatternCheck required_substrings: - PMAK- - PMAT- target: - code - doc - name: NTLM Token severity: medium confidence: strong type: pattern values: - (?PTlRMTVNTUAADAAAA[=0-9A-Za-z_/+-]{8,8000})(?![0-9A-Za-z_/+-]) filter_type: - ValueMorphemesCheck(2) - ValuePatternCheck min_line_len: 160 required_substrings: - TlRMTVNTUAADAAAA target: - doc - code - name: Basic Authorization severity: medium confidence: strong type: pattern values: - (?P(?i:basic))(?P\s+)(?P[=0-9A-Za-z_/+-]{8,8000})(?![0-9A-Za-z_/+-]) min_line_len: 18 filter_type: - ValueBasicAuthCheck required_substrings: - basic target: - code - doc - name: Bearer Authorization severity: medium confidence: moderate type: pattern values: - (?P(?i:bearer|ntlm))(?P\s+)(?P[.0-9A-Za-z_/+-]{32,8000}=*)(?![0-9A-Za-z_/+-]) min_line_len: 37 filter_type: GeneralKeyword required_substrings: - bearer - ntlm target: - code - doc - name: SQL Password severity: medium confidence: weak type: pattern values: - (\\[nrt]|\b)(?i:(?P(CREATE|ALTER|SET\s{1,8}PASSWORD|INSERT(\s{1,8}IGNORE)?|UPDATE\s{1,8}[^\s;]{1,80})\s{1,8}(LOGIN|USER|ROLE|FOR|INTO|SET)\s{1,8}((?!IDENTIFIED|PASSWORD)[^\s;]{1,80}\s{1,8}|VALUES\s{0,8}\(){1,8}(IDENTIFIED((\s{1,8}WITH\s{1,8}\S{1,80})?\s{1,8}(BY|AS))|(=|WITH)?\s{0,8}PASSWORD\b(\s{0,8}=)?)))\s{0,8}(?P[(]\s{0,8})?(?P((?P\\{1,8})?([\"'`]|&(quot|apos|#3[49]);)){1,4})?(?P(?(value_leftquote)((?!(?P=value_leftquote))(?(esq)((?!(?P=esq)([\"'`]|&(quot|apos|#3[49]);)).)|((?!(?P=value_leftquote)).)))|(?!&(quot|apos|#3[49]);)(\\{1,8}([ tnr]|[^\s\"'`])|[^\s\"'`,;\\])){3,80})(?(value_leftquote)(?P(?curl)\s.*(-[uU]|--(proxy-)?user)\s\s*(?P(\\*[\"']){1,3})?(?(value_leftquote)[^\"'\\:]|[^\s\"'\\:]){0,64}:(?P(?(value_leftquote)[^\"'\\]|[^\s\"'\\]){4,64})(?(value_leftquote)(?P(\\?[\"']){1,3})) filter_type: GeneralKeyword use_ml: true required_substrings: - curl min_line_len: 16 target: - doc - code - name: CMD ConvertTo-SecureString severity: high confidence: moderate type: pattern values: - (?PConvertTo-SecureString(\s\s*-(String|AsPlainText|Force))*)\s\s*(?P(\\?[\"']){1,3})?(?P(?(value_leftquote)[^\"'\\]|[^\s\"'\\]){4,800})(?(value_leftquote)(?P(\\?[\"']){1,3})) filter_type: GeneralKeyword use_ml: true required_substrings: - convertto-securestring min_line_len: 27 target: - doc - code - name: CMD Password severity: high confidence: moderate type: pattern values: - (^|\W|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P-[A-Za-z_-]*(?i:pass(in|out|word|phrase)))(\s|\\?[\"'],)\s*(?!-)(?P(\\?[\"']){1,3})?(pass:)?(?!file:|env:|fd:)(?P(?(value_leftquote)[^\"'\\]|[^\s\"'\\]){4,80})(?(value_leftquote)(?P(\\?[\"']){1,3})) filter_type: GeneralKeyword use_ml: true required_substrings: - pass min_line_len: 12 target: - doc - code - name: CMD Token severity: high confidence: moderate type: pattern values: - (^|\W|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P-[A-Za-z_-]*(?i:token|oauth2-bearer))(\s|\\?[\"'],)\s*(?!-)(?P(\\?[\"']){1,3})?(?P(?(value_leftquote)[^\"'\\]|[^\s\"'\\]){4,4000})(?(value_leftquote)(?P(\\?[\"']){1,3})) filter_type: GeneralKeyword use_ml: true required_substrings: - token - oauth2-bearer min_line_len: 12 target: - doc - code - name: CMD Secret severity: high confidence: moderate type: pattern values: - (^|\W|\\[0abfnrtv]|(?:%|\\x)[0-9A-Fa-f]{2}|\\[0-7]{3}|\\[Uu][0-9A-Fa-f]{4}|\x1B\[[0-9;]{0,80}m)(?P-[A-Za-z_-]*(?i:secret)[A-Za-z_-]*)(\s|\\?[\"'],)\s*(?!-)(?P(\\?[\"']){1,3})?(pass:)?(?!file:|env:|fd:)(?P(?(value_leftquote)[^\"'\\]|[^\s\"'\\]){4,4000})(?(value_leftquote)(?P(\\?[\"']){1,3})) filter_type: GeneralKeyword use_ml: true required_substrings: - secret min_line_len: 12 target: - doc - code - name: URL Credentials severity: high confidence: moderate type: pattern values: - (?P[\"'])?(?P[+0-9A-Za-z-]{2,80}://)([^\s\'"<>\[\]^~`{|}:/]{0,80}:){1,3}(?P[^\s\'"<>\[\]^~`{|}@:/]{3,80})@[^\s\'"<>\[\]^~`{|}@:/]{1,800}\\{0,8}(?P[\"'])? filter_type: UrlCredentialsGroup use_ml: true required_substrings: - :// min_line_len: 10 target: - doc - code - name: API severity: low confidence: moderate type: keyword values: - api(?!tal) filter_type: GeneralKeyword use_ml: true min_line_len: 11 required_substrings: - api target: - code - name: Auth severity: medium confidence: moderate type: keyword values: - auth(?!ors?(?!i[tz])) filter_type: GeneralKeyword use_ml: true min_line_len: 12 required_substrings: - auth target: - code - name: Credential severity: medium confidence: moderate type: keyword values: - credential filter_type: GeneralKeyword use_ml: true min_line_len: 18 required_substrings: - credential target: - code - name: Key severity: high confidence: moderate type: keyword values: - key(?!word|board|pad|name) filter_type: GeneralKeyword use_ml: true min_line_len: 11 required_substrings: - key target: - code - name: Nonce severity: low confidence: moderate type: keyword values: - (? None: self.config = config self._verify_rule_config(rule_dict) # mandatory fields self.__rule_name = str(rule_dict[Rule.NAME]) if severity := Severity.get(rule_dict[Rule.SEVERITY]): self.__severity = severity else: self._malformed_rule_error(rule_dict, Rule.SEVERITY) if confidence := Confidence.get(rule_dict[Rule.CONFIDENCE]): self.__confidence = confidence else: self._malformed_rule_error(rule_dict, Rule.CONFIDENCE) if rule_type := getattr(RuleType, str(rule_dict[Rule.TYPE]).upper(), None): self.__rule_type: RuleType = rule_type else: self._malformed_rule_error(rule_dict, Rule.TYPE) self.__patterns = self._init_patterns(rule_dict[Rule.VALUES]) self.__target: List[str] = rule_dict.get(Rule.TARGET, []) if not self.__target or set(self.__target).difference({"code", "doc"}): self._malformed_rule_error(rule_dict, Rule.TARGET) # auxiliary fields self.__filters = self._init_filters(rule_dict.get(Rule.FILTER_TYPE, [])) self.__use_ml = bool(rule_dict.get(Rule.USE_ML)) self.__required_substrings = set(i.strip().lower() for i in rule_dict.get(Rule.REQUIRED_SUBSTRINGS, [])) self.__has_required_substrings = bool(self.__required_substrings) required_regex = rule_dict.get(Rule.REQUIRED_REGEX) if required_regex and not isinstance(required_regex, str): self._malformed_rule_error(rule_dict, Rule.REQUIRED_REGEX) self.__required_regex = re.compile(required_regex) if required_regex else None self.__min_line_len = int(rule_dict.get(Rule.MIN_LINE_LEN, MAX_LINE_LENGTH)) def _malformed_rule_error(self, rule_dict: Dict, field: str): raise ValueError(f"Malformed rule '{self.__rule_name}'." f" field '{field}' has invalid value" f" '{rule_dict.get(field)}'") @cached_property def rule_name(self) -> str: """rule_name getter""" return self.__rule_name @cached_property def rule_type(self) -> RuleType: """rule_type getter""" return self.__rule_type @cached_property def severity(self) -> Severity: """severity getter""" return self.__severity @cached_property def confidence(self) -> Confidence: """confidence getter""" return self.__confidence @cached_property def filters(self) -> List[Filter]: """filters getter""" return self.__filters @staticmethod def _get_arg(arg: str) -> Union[int, float, str]: """Transform given string value to int, then float. In worst case - returns str""" with contextlib.suppress(Exception): return int(arg) with contextlib.suppress(Exception): return float(arg) return str(arg) def _init_filters(self, filter_type: Union[None, str, List[str]]) -> List[Filter]: """ filter_type: str - applies Group of filter list - creates specific set of Filters """ _filters: List[Filter] = [] if isinstance(filter_type, str): # when string passed - (Group) of filters is applied filter_group = getattr(group, filter_type, None) if isinstance(filter_group, type) and issubclass(filter_group, Group): return filter_group(self.config).filters # type: ignore elif isinstance(filter_type, list): # list type means - list of (Filter)s is applied for i in filter_type: if '(' in i and ')' in i: left_pos = i.find('(') filter_parameters = [self._get_arg(x.strip()) for x in i[left_pos + 1:i.find(')')].split(',')] filter_name = i[:left_pos].strip() else: filter_parameters = None filter_name = i _filter = getattr(filters, filter_name, None) if isinstance(_filter, type) and issubclass(_filter, Filter): if filter_parameters: _filters.append(_filter(self.config, *filter_parameters)) else: _filters.append(_filter(self.config)) else: break else: return _filters raise ValueError(f"Malformed rule '{self.__rule_name}'." f" field '{Rule.FILTER_TYPE}' has invalid value" f" '{filter_type}'") def _init_patterns(self, _values: List[str]) -> List[re.Pattern]: """Get pattern values for rule object. Set the pattern value attribute of the rule object based on the passed values. So, if the received rule type corresponds to the RuleType.KEYWORD type, the "patterns" attribute is assigned the value of template keyword regex with the corresponding value. Otherwise, if the received rule type corresponds to the RuleType.PATTERN, RuleType.MULTI or RuleType.PEM_KEY types, the "patterns" attribute is assigned the compile regex ov received value Args: _values: regular expressions """ _patterns: List[re.Pattern] = [] if RuleType.KEYWORD == self.rule_type and 0 < len(_values): for value in _values: _pattern = KeywordPattern.get_keyword_pattern(value) _patterns.append(_pattern) elif RuleType.MULTI == self.rule_type and 2 == len(_values) \ or self.rule_type in (RuleType.PATTERN, RuleType.PEM_KEY) and 0 < len(_values): for value in _values: _patterns.append(re.compile(value)) if RuleType.PEM_KEY == self.rule_type and 1 < len(_values): logger.warning("Rule %s has extra patterns. Only single pattern supported.", self.rule_name) elif RuleType.MULTI == self.rule_type and 2 < len(_values): logger.warning("Rule %s has extra patterns. Only two patterns supported.", self.rule_name) else: raise ValueError(f"Malformed rule config file. Rule '{self.rule_name}' type '{self.rule_type}' is invalid.") return _patterns @cached_property def patterns(self) -> List[re.Pattern]: """patterns getter""" return self.__patterns @cached_property def use_ml(self) -> bool: """use_ml getter""" return self.__use_ml @staticmethod def _verify_rule_config(rule_config: Dict) -> None: """Checks all mandatory fields and wrong names Args: rule_config: dictionary loaded from the config file Raises: ValueError if missing fields is present """ if missing_fields := Rule.mandatory_fields.difference(rule_config.keys()): raise ValueError(f"Malformed rule config file. Contain rule with missing fields: {missing_fields}.") if extra_fields := set(rule_config.keys()).difference(Rule.all_fields): raise ValueError(f"Malformed rule config file. Extra fields: {extra_fields}.") @cached_property def required_substrings(self) -> Set[str]: """required_substrings getter""" return self.__required_substrings @cached_property def has_required_substrings(self) -> bool: """has_required_substrings getter for speedup""" return self.__has_required_substrings @cached_property def required_regex(self) -> Optional[re.Pattern]: """required_regex getter""" return self.__required_regex @cached_property def min_line_len(self) -> int: """min_line_len getter""" return self.__min_line_len @cached_property def target(self) -> List[str]: """target getter""" return self.__target ================================================ FILE: credsweeper/scanner/__init__.py ================================================ ================================================ FILE: credsweeper/scanner/scan_type/__init__.py ================================================ ================================================ FILE: credsweeper/scanner/scan_type/multi_pattern.py ================================================ import copy import re from typing import List from credsweeper.common.constants import RuleType, MAX_LINE_LENGTH from credsweeper.config.config import Config from credsweeper.credentials.candidate import Candidate from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import ValueSearchCheck from credsweeper.filters.filter import Filter from credsweeper.rules.rule import Rule from credsweeper.scanner.scan_type.scan_type import ScanType class MultiPattern(ScanType): """Check if line is a part of a multi-line credential and second part is present within MAX_SEARCH_MARGIN lines. Parameters: MAX_SEARCH_MARGIN: Int constant. Number of lines around current to perform search for the second part """ MAX_SEARCH_MARGIN = 10 @classmethod def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]: """Check if multiline credential present if the file within MAX_SEARCH_MARGIN range from current line_num. Args: config: user configs rule: Rule object to check current line. Should be a multi-pattern rule target: Analysis target Return: List of Candidates if pattern defined in a rule is present in a line and second part of multi-pattern rule is present within MAX_SEARCH_MARGIN from the line. Empty list (False) - otherwise. """ if RuleType.MULTI != rule.rule_type: raise ValueError(f"Rule `{rule}` provided to `{cls.__name__}`.run " f"should have pattern_type equal to `{RuleType.MULTI.value}`") candidates = cls._get_candidates(config, rule, target) for candidate in candidates: # use additional filter to skip the value in first line_data and continues scan filters = copy.deepcopy(rule.filters) filters.append(ValueSearchCheck(config, candidate.line_data_list[0].value)) for line_pos in cls.get_line_positions(candidate.line_data_list[0].line_pos, target): if cls._scan(config, candidate, line_pos, target, rule.patterns[1], filters): break # return candidates with multi line_data_list only return [x for x in candidates if 1 < len(x.line_data_list)] @classmethod def get_line_positions(cls, line_pos: int, target: AnalysisTarget) -> List[int]: """Returns list of line positions to be scanned for second part of multi-pattern rule in a priority order.""" if 0 <= line_pos < target.lines_len: # the same line is first priority_positions = [(0, line_pos)] else: return [] # margin order is constant at start priority_forward = priority_backward = cls.MAX_SEARCH_MARGIN # backward lines are second priority priority_backward += cls.MAX_SEARCH_MARGIN line_pos_margin = 1 while line_pos_margin <= cls.MAX_SEARCH_MARGIN: # forward line_pos_forward = line_pos + line_pos_margin if 0 <= line_pos_forward < target.lines_len: if forward_curled_diff := target.lines[line_pos_forward].count('}', 0, MAX_LINE_LENGTH): forward_curled_diff -= target.lines[line_pos_forward].count('{', 0, MAX_LINE_LENGTH) if 0 < forward_curled_diff: priority_forward += cls.MAX_SEARCH_MARGIN * (1 + forward_curled_diff) else: priority_forward += cls.MAX_SEARCH_MARGIN priority_positions.append((priority_forward, line_pos_forward)) # backward line_pos_backward = line_pos - line_pos_margin if 0 <= line_pos_backward < target.lines_len: if backward_curled_diff := target.lines[line_pos_backward].count('{', 0, MAX_LINE_LENGTH): backward_curled_diff -= target.lines[line_pos_backward].count('}', 0, MAX_LINE_LENGTH) if 0 < backward_curled_diff: priority_backward += cls.MAX_SEARCH_MARGIN * (1 + backward_curled_diff) else: priority_backward += cls.MAX_SEARCH_MARGIN priority_positions.append((priority_backward, line_pos_backward)) # increment the margin for next index line_pos_margin += 1 # first item is priority, second - line_pos priority_positions.sort() return [x for _, x in priority_positions] @classmethod def _scan(cls, config: Config, candidate: Candidate, candi_line_pos: int, target: AnalysisTarget, pattern: re.Pattern, filters: List[Filter]) -> bool: """Search for second pattern in multi-pattern rule. Automatically update candidate with detected line if any. Args: config: dict, scanner configuration candidate: Current credential candidate detected in the line candi_line_pos: line position of lines around candidate to perform search target: Analysis target pattern: second pattern in a rule filters: filters to be applied on candidate Return: Boolean. True if second part detected. False otherwise """ new_target = AnalysisTarget(candi_line_pos, target.lines, target.line_nums, target.descriptor) line_data_list = cls.get_line_data_list(config=config, target=new_target, pattern=pattern, filters=filters) if not line_data_list: return False candidate.line_data_list.extend(line_data_list) return True ================================================ FILE: credsweeper/scanner/scan_type/pem_key_pattern.py ================================================ import logging from typing import List from credsweeper.common.constants import RuleType from credsweeper.config.config import Config from credsweeper.credentials.candidate import Candidate from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.rules.rule import Rule from credsweeper.scanner.scan_type.scan_type import ScanType from credsweeper.utils.pem_key_detector import PemKeyDetector logger = logging.getLogger(__name__) class PemKeyPattern(ScanType): """Scanner detects single PEM private key in target from current line""" @classmethod def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]: """Check if target is a PEM key Args: config: user configs rule: Rule object to check current line. Should be a pem-pattern rule target: Analysis target Return: List of Candidate objects if pattern defined in a rule is present in a line and filters defined in rule do not remove current line. Empty list - otherwise """ if RuleType.PEM_KEY != rule.rule_type: raise ValueError(f"Rule `{rule}` provided to `{cls.__name__}`.run " f"should have pattern_type equal to `{RuleType.PEM_KEY.value}`") for candidate in cls._get_candidates(config, rule, target): if pem_lines := PemKeyDetector(config).detect_pem_key(candidate.line_data_list[0], target): candidate.line_data_list = pem_lines return [candidate] return [] ================================================ FILE: credsweeper/scanner/scan_type/scan_type.py ================================================ import logging import re from abc import ABC, abstractmethod from typing import List from credsweeper.common.constants import RuleType, MIN_DATA_LEN from credsweeper.config.config import Config from credsweeper.credentials.candidate import Candidate, LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.filter import Filter from credsweeper.rules.rule import Rule logger = logging.getLogger(__name__) class ScanType(ABC): """Base class for all Scanners. Scanner allow to check if regex pattern defined in a rule is present in a line. """ @classmethod @abstractmethod def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]: """Check if regex pattern defined in a rule is present in a line. Args: config: user configs rule: Rule object to check current line target: Analysis target Return: List of Candidate objects if pattern defined in a rule is present in a line and filters defined in rule do not remove current line. Empty list - otherwise """ raise NotImplementedError() @classmethod def filtering(cls, target: AnalysisTarget, line_data: LineData, filters: List[Filter]) -> bool: """Check if line data should be removed based on filters. If `use_filters` option is false, always return False Args: target: AnalysisTarget from which `line_data` was obtained line_data: Line data to check with `filters` filters: Filters to use Return: boolean: True if line_data should be removed. False otherwise. If `use_filters` option is false, always return False """ if not line_data.value: logger.debug("Filtered line with empty value in file: %s:%d in line: %s value: '%s'", line_data.path, line_data.line_num, line_data.line, line_data.value) return True for filter_ in filters: if filter_.run(line_data, target): logger.debug("Filtered line with filter: %s in file: %s:%d in line: %s value: %s", filter_.__class__.__name__, line_data.path, line_data.line_num, line_data.line, line_data.value) return True return False @classmethod def get_line_data_list( cls, # config: Config, # target: AnalysisTarget, # pattern: re.Pattern, # filters: List[Filter]) -> List[LineData]: """Check if regex pattern is present in line, and line should not be removed by filters. Args: config: dict of credsweeper configuration target: AnalysisTarget with all necessary data pattern: Compiled regex object to be searched in line filters: Filters to use Return: List of LineData objects if pattern a line and filters do not remove current line. Empty otherwise """ line_data_list: List[LineData] = [] # start - end positions for continuously searching for overlapping pattern offsets = [(0, target.line_len)] while offsets: offset_start, offset_end = offsets.pop() bypass_start = bypass_end = None for _match in pattern.finditer(target.line, pos=offset_start, endpos=offset_end): logger.debug("Valid line for pattern: %s in file: %s:%d in line: %s", pattern.pattern, target.file_path, target.line_num, target.line) line_data = LineData(config, target.line, target.line_pos, target.line_num, target.file_path, target.file_type, target.info, pattern, _match) if bypass_start and bypass_end: if 0 < line_data.variable_start: bypass_end = line_data.variable_start elif 0 < line_data.value_start: bypass_end = line_data.value_start if bypass_start < bypass_end and bypass_end - bypass_start > MIN_DATA_LEN: offsets.append((bypass_start, bypass_end)) bypass_start = bypass_end = None elif MIN_DATA_LEN < line_data.value_end < _match.end() \ and MIN_DATA_LEN < _match.end() - line_data.value_end: # add bypass for valuable sanitized value bypass_start = line_data.value_end bypass_end = offset_end if config.use_filters and cls.filtering(target, line_data, filters): if line_data.variable and 0 <= line_data.variable_start < line_data.variable_end: # may be next matched item will be not filtered - let search it after variable bypass_start = line_data.variable_end bypass_end = offset_end elif line_data.value and 0 <= line_data.value_start < line_data.value_end: # may be next matched item will be not filtered - let search it after variable bypass_start = line_data.value_end bypass_end = offset_end continue if target.offset is not None: # the target line is a chunk of long line - offsets have to be corrected if 0 <= line_data.variable_start: line_data.variable_start += target.offset if 0 <= line_data.variable_end: line_data.variable_end += target.offset if 0 <= line_data.separator_start: line_data.separator_start += target.offset if 0 <= line_data.separator_end: line_data.separator_end += target.offset # value positions are mandatory line_data.value_start += target.offset line_data.value_end += target.offset # get the original line line_data.line = target.lines[target.line_pos] line_data_list.append(line_data) if bypass_start and bypass_end: offsets.append((bypass_start, bypass_end)) return line_data_list @classmethod def _get_candidates(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]: """Returns Candidate objects list. Args: config: user configs rule: Rule object to check current line target: Target for analysis Return: List of Candidate objects if pattern defined in a rule is present in a line and filters defined in rule do not remove current line. Empty list - otherwise """ candidates: List[Candidate] = [] if config.exclude_lines and target.line_strip in config.exclude_lines: return candidates if line_data_list := cls.get_line_data_list(config=config, target=target, pattern=rule.patterns[0], filters=rule.filters): for line_data in line_data_list: if config.exclude_values and line_data.value.strip() in config.exclude_values: continue candidate = Candidate(line_data_list=[line_data], patterns=rule.patterns, rule_name=rule.rule_name, severity=rule.severity, config=config, use_ml=rule.use_ml, confidence=rule.confidence) # single pattern with multiple values means all the patterns must matched in target if 1 < len(rule.patterns) and rule.rule_type in (RuleType.PATTERN, RuleType.KEYWORD): # additional check whether all patterns match if not cls._aux_scan(config, rule, target, candidate): # cannot find secondary values for the candidate continue candidates.append(candidate) return candidates @classmethod def _aux_scan(cls, config: Config, rule: Rule, target: AnalysisTarget, candidate: Candidate) -> bool: """check for all secondary patterns""" for pattern in rule.patterns[1:]: line_data_list = cls.get_line_data_list(config=config, target=target, pattern=pattern, filters=rule.filters) pattern_matched = False for line_data in line_data_list: # standard filtering of values from config if config.exclude_values and line_data.value.strip() in config.exclude_values: continue candidate.line_data_list.append(line_data) pattern_matched = True if not pattern_matched: return False # all secondary patterns were matched and candidate is filled with the values return True ================================================ FILE: credsweeper/scanner/scan_type/single_pattern.py ================================================ from typing import List from credsweeper.common.constants import RuleType from credsweeper.config.config import Config from credsweeper.credentials.candidate import Candidate from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.rules.rule import Rule from credsweeper.scanner.scan_type.scan_type import ScanType class SinglePattern(ScanType): """Check if single line rule present in the line.""" @classmethod def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]: """Check if regex pattern defined in a rule is present in a line. Args: config: config object of user configs rule: Rule object to check current line target: Analysis target Return: List of Candidate objects if pattern defined in a rule is present in a line and filters defined in rule do not remove current line. Empty list - otherwise """ if RuleType.PATTERN != rule.rule_type and RuleType.KEYWORD != rule.rule_type: raise ValueError(f"Rule `{rule}` provided to `{cls.__name__}`.run " f"should have pattern_type equal to `{RuleType.PATTERN.value}`") return cls._get_candidates(config, rule, target) ================================================ FILE: credsweeper/scanner/scanner.py ================================================ import logging import re from pathlib import Path from typing import List, Type, Tuple, Union, Dict, Generator, Set from credsweeper.app import APP_PATH from credsweeper.common.constants import RuleType, MIN_VARIABLE_LENGTH, MIN_SEPARATOR_LENGTH, MIN_VALUE_LENGTH, \ MAX_LINE_LENGTH, PEM_BEGIN_PATTERN from credsweeper.config.config import Config from credsweeper.credentials.candidate import Candidate from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.rules.rule import Rule from credsweeper.scanner.scan_type.multi_pattern import MultiPattern from credsweeper.scanner.scan_type.pem_key_pattern import PemKeyPattern from credsweeper.scanner.scan_type.scan_type import ScanType from credsweeper.scanner.scan_type.single_pattern import SinglePattern from credsweeper.utils.util import Util logger = logging.getLogger(__name__) RULES_PATH = APP_PATH / "rules" / "config.yaml" class Scanner: """Advanced Credential Scanner base class. Parameters: rules: list of rule objects to check min_pattern_len: minimal length specified in all pattern rules min_keyword_len: minimal possible length for a string to be matched by any keyword rule min_len: Smallest between min_pattern_len and min_keyword_len TargetGroup: Type for List[Tuple[AnalysisTarget, str, int]] """ TargetGroup = List[Tuple[AnalysisTarget, str, int]] def __init__(self, config: Config, rule_path: Union[None, str, Path]) -> None: self.config = config # init with MAX_LINE_LENGTH before _set_rules self.min_keyword_len = MAX_LINE_LENGTH self.min_pattern_len = MAX_LINE_LENGTH self.min_pem_key_len = MAX_LINE_LENGTH self.min_multi_len = MAX_LINE_LENGTH self.rules_scanners: List[Tuple[Rule, Type[ScanType]]] = [] self._set_rules_scanners(rule_path) self.min_len = min(self.min_pattern_len, self.min_keyword_len, self.min_pem_key_len, self.min_multi_len, MIN_VARIABLE_LENGTH + MIN_SEPARATOR_LENGTH + MIN_VALUE_LENGTH) self.__keyword_rules_required_substrings = self._get_required_substrings(RuleType.KEYWORD) def keywords_required_substrings_check(self, text: str) -> bool: """check whether `text` has any required substring for all keyword type rules""" return self._substring_check(self.__keyword_rules_required_substrings, text) def _get_required_substrings(self, rule_type: RuleType) -> Set[str]: """init set of required substrings for custom rule type""" required_substrings: Set[str] = set() for rule in (x[0] for x in self.rules_scanners if rule_type == x[0].rule_type): required_substrings.update(set(rule.required_substrings)) return required_substrings @staticmethod def _substring_check(substrings: Set[str], text: str) -> bool: """checks whether `text` has any required substring. Set is used to reduce extra transformations""" for substring in substrings: if substring in text: return True return False def _set_rules_scanners(self, rules_path: Union[None, str, Path]) -> None: """Auxiliary method to fill rules, determine min_pattern_len and set scanners""" if rules_path is None: rules_path = RULES_PATH rule_templates = Util.yaml_load(rules_path) if rule_templates and isinstance(rule_templates, list): rule_names = set() for rule_template in rule_templates: try: rule = Rule(self.config, rule_template) except Exception as exc: logger.error("Rule creation error%s", str(rule_template)) raise exc if not self._is_available(rule): continue if rule.rule_name in rule_names: raise RuntimeError(f"Duplicated rule name {rule.rule_name}") rule_names.add(rule.rule_name) if 0 < rule.min_line_len: if rule.rule_type == RuleType.KEYWORD: self.min_keyword_len = min(self.min_keyword_len, rule.min_line_len) elif rule.rule_type == RuleType.PATTERN: self.min_pattern_len = min(self.min_pattern_len, rule.min_line_len) elif rule.rule_type == RuleType.PEM_KEY: self.min_pem_key_len = min(self.min_pem_key_len, rule.min_line_len) elif rule.rule_type == RuleType.MULTI: self.min_multi_len = min(self.min_multi_len, rule.min_line_len) else: logger.warning("Unknown rule type:%s", rule.rule_type) self.rules_scanners.append((rule, self.get_scanner(rule))) else: raise RuntimeError(f"Wrong rules '{rule_templates}' were read from '{rules_path}'") def _is_available(self, rule: Rule) -> bool: """separate the method to reduce complexity""" if rule.severity < self.config.severity: return False if self.config.doc: if "doc" in rule.target: return True else: if "code" in rule.target: return True return False def yield_rule_scanner( self, # line_len: int, # matched_pattern: bool, # matched_keyword: bool, # matched_pem_key: bool, # matched_multi: bool) -> Generator[Tuple[Rule, Type[ScanType]], None, None]: """returns generator for rules and according scanner""" for rule, scanner in self.rules_scanners: if line_len >= rule.min_line_len \ and (RuleType.PATTERN == rule.rule_type and matched_pattern or RuleType.KEYWORD == rule.rule_type and matched_keyword or RuleType.PEM_KEY == rule.rule_type and matched_pem_key or RuleType.MULTI == rule.rule_type and matched_multi): yield rule, scanner def scan(self, provider: ContentProvider) -> List[Candidate]: """Run scanning of list of target lines from 'targets' with set of rule from 'self.rules'. Args: provider: objects with data to analyze: line, line number, filepath and all lines in file Return: list of all detected credential candidates in analyzed targets """ credentials: List[Candidate] = [] for target in provider.yield_analysis_target(self.min_len): # Trim string from outer spaces to make future `x in str` checks faster target_line_stripped = target.line_strip target_line_stripped_len = target.line_strip_len # use lower case for required substring target_line_stripped_lower = target.line_lower_strip # "cache" - YAPF and pycharm formatters ... matched_keyword = \ target_line_stripped_len >= self.min_keyword_len and ( # '=' in target_line_stripped or ':' in target_line_stripped or ("define" in target_line_stripped and ('(' in target_line_stripped and ',' in target_line_stripped or "#define" in target_line_stripped or "%define" in target_line_stripped) ) or "%global" in target_line_stripped or "set" in target_line_stripped_lower or "%3d" in target_line_stripped_lower ) # matched_pem_key = \ target_line_stripped_len >= self.min_pem_key_len \ and PEM_BEGIN_PATTERN in target_line_stripped and "PRIVATE" in target_line_stripped matched_pattern = target_line_stripped_len >= self.min_pattern_len matched_multi = target_line_stripped_len >= self.min_multi_len if not (matched_keyword or matched_pem_key or matched_pattern or matched_multi): # target may be skipped only with length because not all rules have required_substrings logger.debug("Skip too short (%d) line %s:%d", target_line_stripped_len, target.file_path, target.line_num) continue # cached value to skip the same regex verifying matched_regex: Dict[re.Pattern, bool] = {} for rule, scanner in self.yield_rule_scanner(target_line_stripped_len, matched_pattern, matched_keyword, matched_pem_key, matched_multi): if rule.has_required_substrings \ and not self._substring_check(rule.required_substrings, target_line_stripped_lower): continue # common regex might be triggered for the same target if rule.required_regex: if rule.required_regex in matched_regex: regex_result = matched_regex[rule.required_regex] else: regex_result = bool(rule.required_regex.search(target_line_stripped)) matched_regex[rule.required_regex] = regex_result if not regex_result: continue if new_credentials := scanner.run(self.config, rule, target): credentials.extend(new_credentials) logger.debug("Credential for rule: %s in file: %s:%d in line: %s", rule.rule_name, target.file_path, target.line_num, target.line) return credentials @staticmethod def get_scanner(rule: Rule) -> Type[ScanType]: """Choose type of scanner base on rule affiliation. Args: rule: rule object used to scanning Return: depending on the rule type, returns the corresponding scanner class """ if rule.rule_type in (RuleType.PATTERN, RuleType.KEYWORD): return SinglePattern if RuleType.MULTI == rule.rule_type: return MultiPattern if RuleType.PEM_KEY == rule.rule_type: return PemKeyPattern raise ValueError(f"Unknown pattern_type in rule: {rule.rule_type}") ================================================ FILE: credsweeper/secret/config.json ================================================ { "exclude": { "pattern": [], "containers": [ ".aar", ".apk", ".bz2", ".class", ".gz", ".jar", ".lzma", ".rpm", ".tar", ".war", ".whl", ".xz", ".zip" ], "documents": [ ".doc", ".docx", ".odp", ".ods", ".odt", ".pdf", ".ppt", ".pptx", ".xls", ".xlsx" ], "extension": [ ".3gp", ".7z", ".a", ".aac", ".avi", ".bin", ".bmp", ".css", ".dmg", ".ear", ".eot", ".elf", ".exe", ".gif", ".gmo", ".ico", ".img", ".info", ".jpeg", ".jpg", ".lib", ".map", ".m4a", ".m4b", ".m4p", ".m4r", ".mat", ".mo", ".mov", ".mp3", ".mp4", ".mpg", ".mkv", ".npy", ".npz", ".obj", ".oga", ".ogg", ".ogv", ".ops", ".pak", ".png", ".psd", ".pyc", ".pyd", ".pyo", ".rar", ".rc", ".rc2", ".realm", ".res", ".s7z", ".scss", ".so", ".sum", ".svg", ".swf", ".tif", ".tiff", ".tlb", ".ttf", ".vcxproj", ".vdproj", ".wav", ".webm", ".webp", ".wma", ".woff", ".woff2", ".yuv" ], "path": [ "/.git/", "/.idea/", "/.svn/", "/__pycache__/", "/node_modules/", "/target/", "/.venv/", "/venv/" ], "lines": [], "values": [] }, "source_ext": [ ".aspx", ".cs", ".cshtml", ".ejs", ".erb", ".go", ".html", ".ipynb", ".jsp", ".jsx", ".php", ".phtml", ".rb", ".sh", ".swift", ".ts", ".twig", ".vue", ".xhtml", ".java", ".js", ".py", ".cpp", ".c", ".h", ".hpp", ".mm", ".cu", ".y", ".vb", ".m", ".cu" ], "source_quote_ext": [ ".cs", ".cc", ".php", ".tf", ".kt", ".go", ".ipynb", ".ts", ".java", ".js", ".py", ".cpp", ".c", ".h", ".hpp" ], "find_by_ext_list": [ ".pem", ".cer", ".csr", ".der", ".pfx", ".p12", ".key", ".jks" ], "bruteforce_list": [ "", "changeit", "changeme", "tizen" ], "check_for_literals": true, "max_password_value_length": 64, "max_url_cred_value_length": 80, "line_data_output": [ "line", "line_num", "path", "info", "variable", "variable_start", "variable_end", "value", "value_start", "value_end", "entropy" ], "candidate_output": [ "rule", "severity", "confidence", "ml_probability", "line_data_list" ] } ================================================ FILE: credsweeper/secret/log.yaml ================================================ --- version: 1 disable_existing_loggers: False ignore: [git, pdfminer] formatters: simple: format: "%(asctime)s | %(levelname)s | %(module)s:%(lineno)d | %(message)s" verbose: format: "%(asctime)s | %(levelname)s | %(module)s | %(processName)s:%(threadName)s | %(filename)s:%(lineno)s | %(message)s" handlers: console: class: logging.StreamHandler level: INFO formatter: simple stream: ext://sys.stdout logfile: class: logging.handlers.RotatingFileHandler level: DEBUG formatter: simple filename: ./log/credsweeper.log maxBytes: 50485760 backupCount: 100 delay: True error_log: class: logging.handlers.RotatingFileHandler level: ERROR formatter: verbose filename: ./log/error.log maxBytes: 10485760 backupCount: 5 root: level: DEBUG handlers: [console, error_log] ================================================ FILE: credsweeper/utils/__init__.py ================================================ ================================================ FILE: credsweeper/utils/hop_stat.py ================================================ import statistics from typing import Tuple, Dict class HopStat: """Statistical check distances between symbols sequence in a value on keyboard layout""" KEYBOARD = ( # "`1234567890-=", # "\0qwertyuiop[]\\", # "\0\0asdfghjkl;'", # "\0\0zxcvbnm,./", # ) TRANSLATION = str.maketrans({ '~': '`', '!': '1', '@': '2', '#': '3', '$': '4', '%': '5', '^': '6', '&': '7', '*': '8', '(': '9', ')': '0', '_': '-', '+': '=', 'Q': 'q', 'W': 'w', 'E': 'e', 'R': 'r', 'T': 't', 'Y': 'y', 'U': 'u', 'I': 'i', 'O': 'o', 'P': 'p', '{': '[', '}': ']', '|': '\\', 'A': 'a', 'S': 's', 'D': 'd', 'F': 'f', 'G': 'g', 'H': 'h', 'J': 'j', 'K': 'k', 'L': 'l', ':': ';', '"': "'", 'Z': 'z', 'X': 'x', 'C': 'c', 'V': 'v', 'B': 'b', 'N': 'n', 'M': 'm', '<': ',', '>': '.', '?': '/', }) def __init__(self): self.__hop_dict: Dict[Tuple[str, str], int] = {} base = ''.join(x for x in HopStat.KEYBOARD) for a in (x for x in base if '\0' != x): for b in (x for x in base if '\0' != x): if (b, a) in self.__hop_dict: self.__hop_dict[(a, b)] = self.__hop_dict[(b, a)] continue if a == b: self.__hop_dict[(a, b)] = 0 else: x_a, y_a, z_a = self.__get_xyz(a) x_b, y_b, z_b = self.__get_xyz(b) d = (abs(x_a - x_b) + abs(y_a - y_b) + abs(z_a - z_b)) // 2 self.__hop_dict[(a, b)] = d @staticmethod def __get_xyz(c: str) -> Tuple[int, int, int]: """Returns axial coordinates of a char on keyboad qwerty""" x = y = z = 0 for i, _ in enumerate(HopStat.KEYBOARD): x = HopStat.KEYBOARD[i].find(c) if 0 <= x: z = i x = x - (i // 2) y = -(z + x) break return x, y, z def stat(self, value: str) -> Tuple[float, float]: """Calculates statistical distances between given symbols Args: value: string based on initial alphabet Return: Average distance, deviation or exception if a value is not in initial alphabet """ hops = [] value = value.translate(HopStat.TRANSLATION) for a, b in zip(value[:-1], value[1:]): hop = self.__hop_dict.get((a, b)) if hop is None: raise ValueError(f"Unknown char '{a}' or '{b}'") hops.append(hop) avg = statistics.mean(hops) dev = statistics.stdev(hops, avg) return avg, dev ================================================ FILE: credsweeper/utils/pem_key_detector.py ================================================ import contextlib import logging import re import string from typing import List from credsweeper.common.constants import PEM_BEGIN_PATTERN, PEM_END_PATTERN, Chars, MAX_LINE_LENGTH from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.utils.util import Util logger = logging.getLogger(__name__) class PemKeyDetector: """Class to detect PEM PRIVATE keys only""" BASE64_CHARS_SET = set(Chars.BASE64STDPAD_CHARS.value) RE_BASE64_CHARS = re.compile(fr"[{re.escape(Chars.BASE64STDPAD_CHARS.value)}]+") ENTROPY_LIMIT_BASE64 = 4.5 # the limit is huge with possible prefixes and escaping MAX_PEM_LENGTH = 4 * MAX_LINE_LENGTH IGNORE_STARTS = [PEM_BEGIN_PATTERN, "Proc-Type", "Version", "DEK-Info"] WRAP_CHARACTERS = "\\'\"`;,[]#*!" REMOVE_CHARACTERS = string.whitespace + WRAP_CHARACTERS # last line contains 4 symbols, at least RE_PEM_BEGIN = re.compile(r"(?P" + PEM_BEGIN_PATTERN + r"(?![^-]{1,80}ENCRYPTED)[^-]{0,80}PRIVATE[^-]{1,80}KEY[^-]{0,80}-----" r"(.{1,8000}" + PEM_END_PATTERN + r"[^-]{1,80}KEY[^-]{0,80}-----)?)") RE_PEM_VALUE = re.compile(fr"(?P.{{0,{MAX_PEM_LENGTH}}})") def __init__(self, config: Config): self.__config = config self._barrier_pos: int = -2 self._barrier_cut: int = -2 self._barrier: str = '' def cut_barrier(self, line: str) -> str: """Cut off barrier if detected""" if self._barrier and 0 <= self._barrier_pos < self._barrier_cut < len(line): if line[self._barrier_pos] == self._barrier: return line[self._barrier_cut:] self._barrier = '' self._barrier_pos = self._barrier_cut = -1 return line def set_barrier(self, line: str, start=0, end=MAX_LINE_LENGTH): """Detects barrier with offset of RE_PEM_BEGIN""" self._barrier = '' self._barrier_cut = line.find(PEM_END_PATTERN, start, end) self._barrier_pos = self._barrier_cut - 1 if 0 <= self._barrier_pos < self._barrier_cut < len(line): barrier = line[self._barrier_pos] if barrier not in PemKeyDetector.BASE64_CHARS_SET: self._barrier = barrier def detect_pem_key(self, first_line: LineData, target: AnalysisTarget) -> List[LineData]: """Detects PEM key in single line and with iterative for next lines according https://www.rfc-editor.org/rfc/rfc7468 Args: first_line: detected -----BEGIN from rule pattern target: Analysis target Return: List of LineData with found PEM """ line_data_list: List[LineData] = [] key_data_list: List[str] = [] # escaped key in one line with prefixes pem_end_limit = min(target.line_len, first_line.value_start + PemKeyDetector.MAX_PEM_LENGTH) first_line_end_pattern_start = target.line.find(PEM_END_PATTERN, first_line.value_start, pem_end_limit) first_line_end_pattern_end = ( # target.line.find("-----", first_line_end_pattern_start + 5, first_line_end_pattern_start + 80) # if 0 <= first_line_end_pattern_start else -2) if first_line.value_start < first_line_end_pattern_start < first_line_end_pattern_end: # the whole PEM in single line pem_text = target.line[first_line.value_start:first_line_end_pattern_end + 5] first_line.value = pem_text first_line.value_end = first_line.value_start + len(pem_text) line_data_list.append(first_line) else: line_data_list.append(first_line) pem_text = first_line.line[first_line.value_start:first_line.value_start + PemKeyDetector.MAX_PEM_LENGTH] # perhaps, in next lines start_pos = max(0, target.line_pos) + 1 end_pos = min(start_pos + 200, target.lines_len) for line_pos in range(start_pos, end_pos): target_line = target.lines[line_pos] end_pattern_start = target_line.find(PEM_END_PATTERN, 0, PemKeyDetector.MAX_PEM_LENGTH) end_pattern_end = (5 + target_line.find("-----", end_pattern_start + 5, end_pattern_start + 80) if 0 <= end_pattern_start else -2) if 0 <= end_pattern_start < end_pattern_end: pem_line = target_line[:end_pattern_end] else: pem_line = target_line[:PemKeyDetector.MAX_PEM_LENGTH] next_line = LineData(self.__config, target_line, line_pos, target.line_nums[line_pos], target.file_path, target.file_type, target.info, PemKeyDetector.RE_PEM_VALUE) line_data_list.append(next_line) pem_text += f"\n{pem_line}" if PEM_END_PATTERN in pem_line: break if PemKeyDetector.MAX_PEM_LENGTH < len(pem_text): logger.warning("PEM text oversize") return [] else: logger.warning("PEM end not found %s", target.descriptor) return [] while "\\\\" in pem_text: # reduce JSON escaping sequences of backslash pem_text = pem_text.replace("\\\\", '\\') # replace escaped line ends with real and process them - PEM does not contain '\' sign pem_text = pem_text.replace("\\r\\n", '\n').replace("\\r", '\n').replace("\\n", '\n').replace("\\t", '\t') pem_lines = pem_text.splitlines() self.set_barrier(pem_lines[-1]) for subline in pem_lines: if PemKeyDetector.is_leading_config_line(subline): continue _subline = self.cut_barrier(subline) if sanitized_line := PemKeyDetector.sanitize_line(_subline): if PEM_END_PATTERN in sanitized_line: return PemKeyDetector.finalize(line_data_list, key_data_list, sanitized_line) # the end is not reached - sanitize the data # PEM key line should not contain spaces or . (and especially not ...) if not PemKeyDetector.RE_BASE64_CHARS.fullmatch(sanitized_line): return [] key_data_list.append(sanitized_line) return [] @staticmethod def finalize(line_data_list: List[LineData], key_data_list: List[str], last_line: str) -> List[LineData]: """Checks collected key_data according the key type""" if len(key_data_list) < len(line_data_list): PemKeyDetector.sanitize_line_data_list(line_data_list, key_data_list, last_line) key_data = ''.join(key_data_list) if "PGP" in line_data_list[0].value: # Check if entropy is high enough for base64 set with padding sign entropy = Util.get_shannon_entropy(key_data) if PemKeyDetector.ENTROPY_LIMIT_BASE64 <= entropy: return line_data_list logger.debug("Filtered with entropy %f '%s'", entropy, key_data) if "OPENSSH" in line_data_list[0].value: # Check whether the key is encrypted with contextlib.suppress(Exception): decoded = Util.decode_base64(key_data, urlsafe_detect=True) if 32 < len(decoded) and b"bcrypt" not in decoded: # 256 bits is the minimal size of Ed25519 keys # all OK - the key is not encrypted in this top level return line_data_list logger.debug("Filtered with size or bcrypt '%s'", key_data) else: with contextlib.suppress(Exception): if decoded := Util.decode_base64(key_data, padding_safe=True, urlsafe_detect=True): if len(decoded) == Util.get_asn1_size(decoded): # all OK - the key is not encrypted in this top level return line_data_list logger.debug("Filtered with non asn1 '%s'", key_data) return [] @staticmethod def sanitize_line_data_list(line_data_list: List[LineData], key_data_list: List[str], last_line: str): """Sanitize line_data_list to keep only valuable values""" for value in key_data_list: if 64 <= len(value): # normal value length should not have a collision for line_data in line_data_list: if value == line_data.value: # plain case - no sanitize necessary break value_start = line_data.value.find(value) if 0 <= value_start: line_data.value = value line_data.value_start = value_start line_data.value_end = value_start + len(value) break else: # end of pem may be short and have collisions in long lines value_pattern = re.compile(fr".*[^0-9A-Za-z+/=]?({re.escape(value)})[^0-9A-Za-z+/=]?.*") for line_data in line_data_list: if value == line_data.value: # plain case - no sanitize necessary break if value_match := value_pattern.fullmatch(line_data.value): line_data.value = value_match.group(1) line_data.value_start, line_data.value_end = value_match.span(1) break if last_line.startswith(PEM_END_PATTERN) and last_line.endswith("-----"): last_line_data = line_data_list[-1] last_value_start = last_line_data.value.find(last_line, 0, PemKeyDetector.MAX_PEM_LENGTH) if 0 <= last_line_data.value_start <= last_value_start: # left barrier was sanitized last_line_data.value = last_line last_line_data.value_start = last_value_start last_line_data.value_end = last_value_start + len(last_line) @staticmethod def sanitize_line(line: str, recurse_level: int = 5) -> str: """Remove common symbols that can surround PEM keys inside code. Examples:: `# ZZAWarrA1` `* ZZAWarrA1` ` "ZZAWarrA1\\n" + ` Args: line: Line to be cleaned recurse_level: to avoid infinite loop in case when removed symbol inside base64 encoded Return: line with special characters removed from both ends """ recurse_level -= 1 if 0 > recurse_level: return line # Note that this strip would remove `\n` but not `\\n` line = line.strip(string.whitespace) while line.startswith(("// ", "//\t")): line = line[3:] while line.startswith(("/// ", "///\t")): line = line[4:] while line.startswith("/*"): line = line[2:] while line.endswith("*/"): line = line[:-2] while line.endswith("\\"): # line carry in many languages line = line[:-1] # remove concatenation carefully only when it is not part of base64 if line.startswith('+') and 1 < len(line) and line[1] not in PemKeyDetector.BASE64_CHARS_SET: line = line[1:] if line.endswith('+') and 2 < len(line) and line[-2] not in PemKeyDetector.BASE64_CHARS_SET: line = line[:-1] line = line.strip(PemKeyDetector.REMOVE_CHARACTERS) # check whether new iteration requires for x in PemKeyDetector.WRAP_CHARACTERS: if x in line: return PemKeyDetector.sanitize_line(line, recurse_level=recurse_level) return line @staticmethod def is_leading_config_line(line: str) -> bool: """Remove non-key lines from the beginning of a list. Example lines with non-key leading lines: .. code-block:: text Proc-Type: 4,ENCRYPTED DEK-Info: DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211 ZZAWarrA1... Args: line: Line to be checked Return: True if the line is not a part of encoded data but leading config """ if not line: return True for ignore_string in PemKeyDetector.IGNORE_STARTS: if ignore_string in line: return True return False ================================================ FILE: credsweeper/utils/util.py ================================================ import ast import base64 import contextlib import json import logging import math import os import random import re import string import warnings from pathlib import Path from typing import Any, Dict, List, Tuple, Optional, Union import numpy as np import yaml from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives.asymmetric.dh import DHPrivateKey, DHPublicKey from cryptography.hazmat.primitives.asymmetric.dsa import DSAPrivateKey, DSAPublicKey from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePrivateKey, EllipticCurvePublicKey from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey, Ed25519PublicKey from cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PrivateKey, Ed448PublicKey from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PublicKey, X25519PrivateKey from cryptography.hazmat.primitives.asymmetric.x448 import X448PublicKey, X448PrivateKey from cryptography.hazmat.primitives.serialization import load_der_private_key from cryptography.hazmat.primitives.serialization.pkcs12 import load_key_and_certificates from lxml import etree from credsweeper.common.constants import AVAILABLE_ENCODINGS, \ DEFAULT_ENCODING, LATIN_1, CHUNK_SIZE, MAX_LINE_LENGTH, CHUNK_STEP_SIZE, ASCII, UTF_16_LE, UTF_16_BE logger = logging.getLogger(__name__) class Util: """Class that contains different useful methods.""" @staticmethod def get_extension(file_path: str, lower=True) -> str: """Return extension of file in lower case by default e.g.: '.txt', '.JPG'""" _, extension = os.path.splitext(str(file_path)) return extension.lower() if lower else extension @staticmethod def get_regex_combine_or(re_strs: List[str]) -> str: """Routine combination for regex 'or'""" result = "(?:" for elem in re_strs: result += elem + "|" if result[-1] == "|": result = result[:-1] result += ")" return result @staticmethod def get_shannon_entropy(data: Union[str, bytes]) -> float: """Borrowed from http://blog.dkbza.org/2007/05/scanning-data-for-entropy-anomalies.html.""" if not data: return 0.0 size = len(data) _uniq, counts = np.unique(list(data), return_counts=True) probabilities = counts / size entropy = -float(np.sum(probabilities * np.log2(probabilities))) return entropy # Precalculated data for speedup MIN_DATA_ENTROPY: Dict[int, float] = { 16: 1.66973671780348, 20: 2.07723544540831, 32: 3.25392803184602, 40: 3.64853567064867, 64: 4.57756933688035, 384: 7.39, 512: 7.55, } @staticmethod def get_min_data_entropy(x: int) -> float: """Returns minimal entropy for size of random data. Precalculated data is applied for speedup""" if x in Util.MIN_DATA_ENTROPY: y = Util.MIN_DATA_ENTROPY[x] elif 8 < x < 64: # approximated for range 12 - 64 _x = x - 8 y = ((0.000016617804 * _x - 0.002695077) * _x + 0.170393) * _x + 0.4 elif 64 < x < 384: # logarithm base 2 - slow, but precise _x = x - 8 y = 1.095884 * math.log2(_x) - 1.90156 elif 384 < x < 512: # solved for 384 - 512 y = -0.11215851 * math.log2(x)**2 + 2.34303484 * math.log2(x) - 4.4466237 else: # less or equal to 8 bytes might have 0 entropy y = 0 return y @staticmethod def is_ascii_entropy_validate(data: bytes) -> bool: """ Tests small data sequence (<256) for data randomness by testing for ascii and shannon entropy Returns True when data is an ASCII symbols or have small entropy """ if not data: return True data_len = len(data) if 9 > data_len: # even random data may have 0 entropy for length of 8 bytes and less return True entropy = 0. cells = [int(0)] * 256 ascii_test = True # "basket" sorting approach for x in data: cells[x] += 1 if ascii_test and 0b10000000 & x: ascii_test = False if ascii_test: # only ascii symbols found return True left = 0. step = 256.0 / data_len right = left + step while left < 256: cell_sum = 0 i = int(left) r = int(right) while i < r and i < 256: cell_sum += cells[i] i += 1 p_x = float(cell_sum) / data_len if p_x > 0: entropy += -p_x * math.log2(p_x) left = right right += step min_entropy = Util.get_min_data_entropy(data_len) return entropy < min_entropy @staticmethod def is_binary(data: Union[bytes, bytearray]) -> bool: """ Returns True when two zeroes sequence is found in begin of data. The sequence never exists in text format (UTF-8, UTF-16). UTF-32 is not supported. """ if 0 <= data.find(b"\0\0", 0, MAX_LINE_LENGTH): return True return False NOT_LATIN1_PRINTABLE_SET = set(range(0, 256)) \ .difference(set(x for x in string.printable.encode(ASCII))) \ .difference({0x1B}) \ .difference(set(x for x in range(0xA0, 0x100))) @staticmethod def is_latin1(data: Union[bytes, bytearray]) -> bool: """Returns True when data looks like LATIN-1 for first MAX_LINE_LENGTH bytes.""" result = False if data: non_latin1_cnt = sum(1 for x in data[:MAX_LINE_LENGTH] if x in Util.NOT_LATIN1_PRINTABLE_SET) # experiment for 255217 binary files shown avg = 0.268264 ± 0.168767, so let choose minimal chunk_len = min(MAX_LINE_LENGTH, len(data)) result = bool(0.1 > non_latin1_cnt / chunk_len) return result @staticmethod def read_file(path: Union[str, Path], encodings: Optional[List[str]] = None) -> List[str]: """Read the file content using different encodings. Try to read the contents of the file according to the list of encodings "encodings" as soon as reading occurs without any exceptions, the data is returned in the current encoding Args: path: path to file encodings: supported encodings Return: list of file rows in a suitable encoding from "encodings", if none of the encodings match, an empty list will be returned """ if data := Util.read_data(path): return Util.decode_bytes(data, encodings) return [] @staticmethod def decode_text(content: Optional[bytes], encodings: Optional[List[str]] = None) -> Optional[str]: """Decode content using different encodings. Try to decode bytes according to the list of encodings "encodings" occurs without any exceptions. UTF-16 requires BOM Args: content: raw data that might be text encodings: supported encodings Return: Decoded text in str for any suitable encoding or None when binary data detected """ if content is None: return None binary_suggest = False if encodings: # use exactly defined encodings _encodings = encodings elif content.startswith(b"\xFF\xFE") or 1 < len(content) and 0 == content[1]: _encodings = [UTF_16_LE] elif content.startswith(b"\xFE\xFF") or content.startswith(b'\x00'): _encodings = [UTF_16_BE] else: _encodings = AVAILABLE_ENCODINGS for encoding in _encodings: try: if binary_suggest and LATIN_1 == encoding and (Util.is_binary(content) or not Util.is_latin1(content)): # LATIN_1 may convert data (bytes in range 0x80:0xFF are transformed) break text = content.decode(encoding=encoding, errors="strict") if content != text.encode(encoding=encoding, errors="strict"): # the refurbish test helps to detect a real encoding binary_suggest = True continue # the case decoding is good if UTF_16_LE == encoding or UTF_16_BE == encoding: return text.lstrip('\uFEFF') return text except UnicodeError: binary_suggest = True logger.debug("UnicodeError: Can't decode content as %s.", encoding) except Exception as exc: logger.error("Unexpected Error: Can't read content as %s. Error message: %s", encoding, exc) return None @staticmethod def split_text(text: str) -> List[str]: """Splits a text into lines, handling all common line endings (e.g., LF, CRLF, CR).""" return text.replace("\r\n", '\n').replace('\r', '\n').split('\n') @staticmethod def decode_bytes(content: Optional[bytes], encodings: Optional[List[str]] = None) -> List[str]: """Decode content using different encodings. Try to decode bytes according to the list of encodings "encodings" occurs without any exceptions. UTF-16 requires BOM Args: content: raw data that might be text encodings: supported encodings Return: list of file rows in a suitable encoding from "encodings", if none of the encodings match, an empty list will be returned Also empty list will be returned after last encoding and 0 symbol is present in lines not at end """ if text := Util.decode_text(content, encodings): return Util.split_text(text) return [] @staticmethod def get_asn1_size(data: Union[bytes, bytearray]) -> int: """Only sequence type 0x30 and size correctness are checked Returns size of ASN1 data over 128 bytes or 0 if no interested data """ if isinstance(data, (bytes, bytearray)) and 2 <= len(data) and 0x30 == data[0]: # https://www.oss.com/asn1/resources/asn1-made-simple/asn1-quick-reference/basic-encoding-rules.html#Lengths length = data[1] if 0x80 == length: if data.endswith(b"\x00\x00"): # assume, all data are ASN1 of various size return len(data) # else - skip the case where the ASN1 size is smaller than the actual data elif 0x80 < length: byte_len = 0x7F & length len_limit = 2 + byte_len if 4 >= byte_len and len(data) >= len_limit: length = 0 for i in range(2, len_limit): length <<= 8 length |= data[i] if len(data) >= length + len_limit: return length + len_limit # else - unsupported huge size else: # length is less than 0x80 if len(data) >= length + 2: return length + 2 # fallback - unsupported return 0 @staticmethod def read_data(path: Union[str, Path]) -> Optional[bytes]: """Read the file bytes as is. Try to read the data of the file. Args: path: path to file Return: list of file rows in a suitable encoding from "encodings", if none of the encodings match, an empty list will be returned """ try: with open(path, "rb") as file: return file.read() except Exception as exc: logger.error("Unexpected Error: Can not read '%s'. Error message: '%s'", path, exc) return None @staticmethod def get_xml_from_lines(xml_lines: List[str]) -> Tuple[Optional[List[str]], Optional[List[int]]]: """Parse xml data from list of string and return List of str. Args: xml_lines: list of lines of xml data Return: List of formatted string(f"{root.tag} : {root.text}") Raises: xml exception """ lines = [] line_nums = [] tree = etree.fromstringlist(xml_lines) for element in tree.iter(): tag = Util.extract_element_data(element, "tag") text = Util.extract_element_data(element, "text") lines.append(f"{tag} : {text}") line_nums.append(element.sourceline) return lines, line_nums @staticmethod def extract_element_data(element: Any, attr: str) -> str: """Extract xml element data to string. Try to extract the xml data and strip() the string. Args: element: xml element attr: attribute name Return: String xml data with strip() """ element_attr: Any = getattr(element, attr) if element_attr is None or not isinstance(element_attr, str): return '' return str(element_attr).strip() @staticmethod def json_load(file_path: Union[str, Path], encoding=DEFAULT_ENCODING) -> Any: """Load dictionary from JSON file""" try: with open(file_path, "r", encoding=encoding) as f: return json.load(f) except Exception as exc: logging.error("Failed to read: %s %s", file_path, exc) return None @staticmethod def json_dump(obj: Any, file_path: Union[str, Path], encoding=DEFAULT_ENCODING, indent=4) -> None: """Write dictionary to JSON file""" try: with open(file_path, "w", encoding=encoding) as f: json.dump(obj, f, indent=indent) except Exception as exc: logging.error("Failed to write: %s %s", file_path, exc) @staticmethod def yaml_load(file_path: Union[str, Path], encoding=DEFAULT_ENCODING) -> Any: """Load dictionary from YAML file""" try: with open(file_path, "r", encoding=encoding) as f: return yaml.safe_load(f) except Exception as exc: logger.error("Failed to read %s %s", file_path, exc) return None @staticmethod def yaml_dump(obj: Any, file_path: Union[str, Path], encoding=DEFAULT_ENCODING) -> None: """Write dictionary to YAML file""" try: with open(file_path, "w", encoding=encoding) as f: yaml.dump(obj, f) except Exception as exc: logging.error("Failed to write: %s %s", file_path, exc) @staticmethod def parse_python(source: str) -> List[Any]: """Parse Python source and back to remove strings merge and line wrap""" with warnings.catch_warnings(record=True): warnings.simplefilter("error", SyntaxWarning) src = ast.parse(source) result = ast.unparse(src).splitlines() return result PEM_CLEANING_PATTERN = re.compile(r"\\[tnrvf]") WHITESPACE_TRANS_TABLE = str.maketrans('', '', string.whitespace) @staticmethod def decode_base64(text: str, padding_safe: bool = False, urlsafe_detect=False) -> bytes: """decode text to bytes with / without padding detect and urlsafe symbols""" value = text.translate(Util.WHITESPACE_TRANS_TABLE) if padding_safe: # workaround for binascii.Error: Excess padding not allowed value = value.rstrip('=') pad_num = 0x3 & len(value) if pad_num: value += '=' * (4 - pad_num) if urlsafe_detect and ('-' in value or '_' in value): decoded = base64.b64decode(value, altchars=b"-_", validate=True) else: decoded = base64.b64decode(value, validate=True) return decoded @staticmethod def load_pk(data: bytes, password: Optional[bytes] = None) -> Optional[PrivateKeyTypes]: """Try to load private key from PKCS1, PKCS8 and PKCS12 formats""" with contextlib.suppress(Exception): # PKCS1, PKCS8 probes private_key = load_der_private_key(data, password) return private_key with contextlib.suppress(Exception): # PKCS12 probe private_key, _certificate, _additional_certificates = load_key_and_certificates(data, password) return private_key return None RANDOM_DATA = random.randbytes(20) @staticmethod def check_pk(pkey: PrivateKeyTypes) -> bool: """Check private key with encrypt-decrypt random data""" if not pkey or isinstance(pkey, (EllipticCurvePublicKey, DSAPublicKey, Ed448PublicKey, Ed25519PublicKey, DHPublicKey, X448PublicKey, X25519PublicKey)): # These aren't the keys we're looking for return False if isinstance(pkey, (EllipticCurvePrivateKey, DSAPrivateKey, Ed448PrivateKey, Ed25519PrivateKey, DHPrivateKey, X448PrivateKey, X25519PrivateKey)): # One does not simply perform check the keys return True if isinstance(pkey, RSAPrivateKey): pd = padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None) ciphertext = pkey.public_key().encrypt(Util.RANDOM_DATA, padding=pd) refurb = pkey.decrypt(ciphertext, padding=pd) return bool(refurb == Util.RANDOM_DATA) logger.warning("Unknown private key type: %s", type(pkey)) return False @staticmethod def get_chunks(line_len: int) -> List[Tuple[int, int]]: """Returns chunks positions for given line length""" # line length is over MAX_LINE_LENGTH already chunks = [(0, CHUNK_SIZE)] # case for oversize line next_offset = CHUNK_STEP_SIZE while line_len > next_offset: # the target is too long for single "finditer" - it will be scanned by chunks if line_len > next_offset + MAX_LINE_LENGTH: # the chunk is not the before last chunks.append((next_offset, next_offset + CHUNK_SIZE)) next_offset += CHUNK_STEP_SIZE else: # the tail of line is between CHUNK_SIZE and MAX_LINE_LENGTH chunks.append((next_offset, line_len)) break return chunks @staticmethod def subtext(text: str, pos: int, hunk_size: int) -> str: """cut text symmetrically for given position or use remained quota to be fitted in 2x hunk_size""" # cut trailed whitespaces to obtain more informative data text = text.rstrip() if hunk_size <= pos: left_quota = 0 left_pos = pos - hunk_size else: left_quota = hunk_size - pos left_pos = 0 # skip leading whitespaces in result string for i in range(left_pos, pos): if text[i] in string.whitespace: left_quota += 1 left_pos += 1 else: break right_remain = len(text) - pos if hunk_size <= right_remain: right_quota = 0 right_pos = pos + hunk_size + left_quota else: right_quota = hunk_size - right_remain right_pos = pos + hunk_size + left_quota if len(text) < right_pos: right_pos = len(text) if 0 < left_pos: left_pos -= right_quota if 0 > left_pos: left_pos = 0 return text[left_pos:right_pos].rstrip() @staticmethod def get_excel_column_name(column_index: int) -> str: """Converts index based column position into Excel style column name""" name = '' if isinstance(column_index, int): while 0 <= column_index: column_index, remain = divmod(column_index, 26) name = f"{chr(ord('A') + remain)}{name}" column_index -= 1 return name ================================================ FILE: docs/Makefile ================================================ # Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= -v -W SPHINXBUILD ?= sphinx-build SOURCEDIR = source BUILDDIR = build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ================================================ FILE: docs/README.md ================================================ # Documentation of CredSweeper The directory is used for documentation of CredSweeper with using [sphinx](https://www.sphinx-doc.org/en/master/), ## Workflow There is applied custom documentation, so auto-generation might fail. Please, use auto-generation as reference. With the command new sources might be updated (in /docs directory): ```bash sphinx-apidoc --force --full --ext-autodoc ../credsweeper -o source/ ``` Edit, then check with command: ```bash make html ``` ================================================ FILE: docs/howto/how-to-contribute.md ================================================ # Contributing Thank you for your interest in contributing to the CredSweeper tool! The document covers the process for contributing to the CredSweeper code and documentation. Contributions may be as simple as typo corrections or as complex as new features. 1. [Process for contributing](#process-for-contributing) 1. [Repository structure](#repository-structure) 2. [File Name](#file-name) 3. [Self Test & Verification](#self-test-and-verification) 2. [How to PR](#how-to-pr) 3. [DOs and DON'Ts](#dos-and-donts) ## Process for contributing You need a basic understanding of [Git and GitHub.com](https://guides.github.com/activities/hello-world/). **Step 1:** You can skip this step for small changes such as typo corrections. Open an [new issue](https://github.com/Samsung/CredSweeper/issues/new) describing what you want to do, such as change an existing code, functionality or create a new one. You can also look at our [issues](https://github.com/Samsung/CredSweeper/issues) list and volunteer to work on the ones you're interested in. **Step 2:** Fork the [Samsung/CredSweeper](https://github.com/Samsung/CredSweeper/fork) repo and create a branch for your changes. For small changes, you can use GitHub's web interface. Simply click the **Edit the file in your fork of this project** on the file you'd like to change. GitHub creates the new branch for you when you submit the changes. VCS(git) requirement: the branch MUST be forked after latest release. **Step 3:** Make the changes on this new branch. Be sure to follow the proper Python syntax. For more information, see the [style guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md). Use pre-commit hook with [yapf config file](https://github.com/Samsung/CredSweeper/blob/main/.style.yapf). ### Repository structure All new filters or another feature should be located in the appropriate directories. Also, for all new functionality, you need to create new positive and negative tests in the appropriate file and directory in ./tests/ ### File name File names use the following rules: - Contain only lowercase letters, numbers, and underlines. - No spaces or punctuation characters. Use the underlines to separate words and numbers in the file name. - Use action verbs that are specific, such as develop, buy, build, troubleshoot. No -ing words. - No small words - don't include a, and, the, in, or, etc. - Keep file names reasonably short. ### Self Test and Verification After updating CredSweeper code, please verify your change doesn't break the library. We suggest unit-tests using the pytest. You can easily run it with: ```bash python -m pytest ``` Please make it sure running all tests and no any fail case. Run all Actions in your fork before submitting the PR to the upstream and ensure all CI checks pass. **Step 4:** Submit a Pull Request (PR) from your branch to `Samsung/CredSweeper/main`. Each PR should usually address one issue at a time. The PR can modify one or multiple files. If you're addressing multiple fixes on different files, separate PRs are preferred. If your PR is addressing an existing issue, add the `Fixes #Issue_Number` keyword to the commit message or PR description. That way, the issue is automatically closed when the PR is merged. For more information, see [Closing issues via commit messages](https://help.github.com/articles/closing-issues-via-commit-messages/). The CredSweeper team will review your PR and let you know if there are any other updates/changes necessary in order to approve it. **Step 5:** Make any necessary updates to your branch as discussed with the team. The maintainers will merge your PR into the main branch once feedback has been applied and your change is approved. ### How to PR 1. Fork form the original repository, https://github.com/Samsung/CredSweeper. (Ref. https://help.github.com/articles/fork-a-repo/) 2. Type `git clone`, and then paste the URL you copied in 1. It will look like this, with your GitHub username instead of `YOUR-USERNAME`: ```bash git clone https://github.com/YOUR-USERNAME/CredSweeper.git ``` 3. Set to synchronize the original repository and the forked repository. ```bash git remote -v git remote add upstream https://github.com/Samsung/CredSweeper.git git remote -v ``` 4. Create a new branch on the forked repository or the local repository, and switch to the new branch. ```bash git checkout -b ``` 5. Install Yapf as a pre-commit hook with ``` bash pip install pre-commit pre-commit install ``` 6. Create a local commit. ```bash git status git add git commit -a ``` 7. Push the branch ```bash git push origin ``` 8. Open a pull request on https://github.com/Samsung/CredSweeper. All tests and checks MUST be passed - Codestyle check - Static analysis - Unit tests > - Development tests - use only linux and compatible version of packages. Code coverage is checked without test_app.py. > - Release tests - use Linux, Mac, Windows platform without version limitation. - Dynamic analysis (fuzzing) > Used Atheris framework to fuzzing various input. Code coverage is checked. In case of unsatisfied coverage - need to do new fuzzing or refactor fuzzer. - Benchmark > If your PR changes benchmark scores - the scores MUST be updated (cicd/benchmark.txt) 9. Verify ActionTest after merge. > The test verifies integration CredSweeper to github action and points to main branch of main repo. ## DOs and DON'Ts The following list shows some guiding rules that you should keep in mind when you're contributing to the CredSweeper: - **DON'T** surprise us with large pull requests. Instead, file an issue and start a discussion so we can agree on a direction before you invest a large amount of time. - **DO** read the [style guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) guideline. - **DO** create a separate branch on your fork before working on the changes. - **DO** follow the [GitHub Flow workflow](https://guides.github.com/introduction/flow/). - **DO** blog and tweet (or whatever) about your contributions, frequently! > **Note** > > you might notice that some of the topics are not currently following all the guidelines specified here and on the [style guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) as well. We're working towards achieving consistency throughout the tool. Check the list of [open issues](https://github.com/Samsung/CredSweeper/issues?q=is%3Aissue+is%3Aopen) we're currently tracking for that specific goal. ================================================ FILE: docs/make.bat ================================================ @ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=source set BUILDDIR=build if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.https://www.sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% :end popd ================================================ FILE: docs/requirements.txt ================================================ myst_parser[linkify]==4.0.1 sphinx==8.1.3 sphinx_rtd_theme==3.0.2 ================================================ FILE: docs/source/api.rst ================================================ API === This part of the documentation covers all the interfaces of CredSweeper. .. toctree:: :maxdepth: 2 credsweeper credsweeper.common.rst credsweeper.config.rst credsweeper.credentials.rst credsweeper.deep_scanner.rst credsweeper.file_handler.rst credsweeper.filters.group.rst credsweeper.filters.rst credsweeper.logger.rst credsweeper.ml_model.rst credsweeper.rules.rst credsweeper.scanner.rst credsweeper.scanner.scan_type.rst credsweeper.utils.rst ================================================ FILE: docs/source/apps_config.rst ================================================ CredSweeper Credential Analyzer Configuration ============================================= .. literalinclude:: ../../credsweeper/secret/config.json :language: json :linenos: ================================================ FILE: docs/source/conf.py ================================================ # Configuration file for the Sphinx documentation builder. # # For the full list of built-in configuration values, see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html import os import sys sys.path.insert(0, os.path.abspath('../..')) di = os.path.abspath(os.pardir) remove_docs = di.strip('docs') for r, d, f in os.walk(r"{}credsweeper".format(remove_docs)): sys.path.append(r) # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = 'CredSweeper' copyright = '2026, Samsung CredTeam' author = 'CredTeam' from credsweeper import __version__ as credsweeper_version # The short X.Y version version = '.'.join(credsweeper_version.split('.')[0:2]) # The full version, including alpha/beta/rc tags release = credsweeper_version # The master toctree document. master_doc = 'index' # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode', 'sphinx.ext.todo', 'sphinx.ext.napoleon', 'myst_parser', ] intersphinx_mapping = { 'python': ('https://docs.python.org/3/', None), 'numpy': ('https://numpy.org/doc/stable/', None), } myst_enable_extensions = [ "amsmath", "attrs_inline", "colon_fence", "deflist", "dollarmath", "fieldlist", "html_admonition", "html_image", "linkify", "replacements", "smartquotes", "strikethrough", "substitution", "tasklist", ] source_suffix = { '.rst': 'restructuredtext', '.txt': 'markdown', '.md': 'markdown', } myst_heading_anchors = 3 # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = 'en' # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # If true, `todo` and `todoList` produce output, else they produce nothing. # https://www.sphinx-doc.org/en/master/usage/extensions/todo.html#configuration todo_include_todos = True # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = 'sphinx_rtd_theme' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] html_theme_options = { 'logo_only': True, # 'navigation_depth': 3 # } # The name of an image file (relative to this directory) to place at the top of the sidebar. html_logo = 'https://raw.githubusercontent.com/Samsung/CredSweeper/main/docs/images/Logo.png' html_scaled_image_link = False # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = 'ci_doc' # -- Suppress unusual parts ... in json e.g. suppress_warnings = ['misc.highlighting_failure'] # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [(master_doc, 'ci', u'CI Documentation', [author], 1)] sys.path.append(os.path.dirname(__file__) + '/..') ================================================ FILE: docs/source/credsweeper.common.rst ================================================ credsweeper.common package ========================== Submodules ---------- credsweeper.common.constants module ----------------------------------- .. automodule:: credsweeper.common.constants :members: :undoc-members: :show-inheritance: credsweeper.common.keyword\_checklist module -------------------------------------------- .. automodule:: credsweeper.common.keyword_checklist :members: :undoc-members: :show-inheritance: credsweeper.common.keyword\_pattern module ------------------------------------------ .. automodule:: credsweeper.common.keyword_pattern :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.common :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.config.rst ================================================ credsweeper.config package ========================== Submodules ---------- credsweeper.config.config module -------------------------------- .. automodule:: credsweeper.config.config :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.config :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.credentials.rst ================================================ credsweeper.credentials package =============================== Submodules ---------- credsweeper.credentials.augment\_candidates module -------------------------------------------------- .. automodule:: credsweeper.credentials.augment_candidates :members: :undoc-members: :show-inheritance: credsweeper.credentials.candidate module ---------------------------------------- .. automodule:: credsweeper.credentials.candidate :members: :undoc-members: :show-inheritance: credsweeper.credentials.candidate\_group\_generator module ---------------------------------------------------------- .. automodule:: credsweeper.credentials.candidate_group_generator :members: :undoc-members: :show-inheritance: credsweeper.credentials.candidate\_key module --------------------------------------------- .. automodule:: credsweeper.credentials.candidate_key :members: :undoc-members: :show-inheritance: credsweeper.credentials.credential\_manager module -------------------------------------------------- .. automodule:: credsweeper.credentials.credential_manager :members: :undoc-members: :show-inheritance: credsweeper.credentials.line\_data module ----------------------------------------- .. automodule:: credsweeper.credentials.line_data :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.credentials :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.deep_scanner.rst ================================================ credsweeper.deep\_scanner package ================================= Submodules ---------- credsweeper.deep\_scanner.abstract\_scanner module -------------------------------------------------- .. automodule:: credsweeper.deep_scanner.abstract_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.byte\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.byte_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.bzip2\_scanner module ----------------------------------------------- .. automodule:: credsweeper.deep_scanner.bzip2_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.crx\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.crx_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.csv\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.csv_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.deb\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.deb_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.deep\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.deep_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.docx\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.docx_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.eml\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.eml_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.encoder\_scanner module ------------------------------------------------- .. automodule:: credsweeper.deep_scanner.encoder_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.gzip\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.gzip_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.html\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.html_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.jclass\_scanner module ------------------------------------------------ .. automodule:: credsweeper.deep_scanner.jclass_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.jks\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.jks_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.lang\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.lang_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.lzma\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.lzma_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.mxfile\_scanner module ------------------------------------------------ .. automodule:: credsweeper.deep_scanner.mxfile_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.patch\_scanner module ----------------------------------------------- .. automodule:: credsweeper.deep_scanner.patch_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.pdf\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.pdf_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.pkcs\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.pkcs_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.png\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.png_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.pptx\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.pptx_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.rpm\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.rpm_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.rtf\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.rtf_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.sqlite3\_scanner module ------------------------------------------------- .. automodule:: credsweeper.deep_scanner.sqlite3_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.strings\_scanner module ------------------------------------------------- .. automodule:: credsweeper.deep_scanner.strings_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.tar\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.tar_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.tmx\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.tmx_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.xlsx\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.xlsx_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.xml\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.xml_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.zip\_scanner module --------------------------------------------- .. automodule:: credsweeper.deep_scanner.zip_scanner :members: :undoc-members: :show-inheritance: credsweeper.deep\_scanner.zlib\_scanner module ---------------------------------------------- .. automodule:: credsweeper.deep_scanner.zlib_scanner :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.deep_scanner :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.file_handler.rst ================================================ credsweeper.file\_handler package ================================= Submodules ---------- credsweeper.file\_handler.abstract\_provider module --------------------------------------------------- .. automodule:: credsweeper.file_handler.abstract_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.analysis\_target module ------------------------------------------------- .. automodule:: credsweeper.file_handler.analysis_target :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.byte\_content\_provider module -------------------------------------------------------- .. automodule:: credsweeper.file_handler.byte_content_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.content\_provider module -------------------------------------------------- .. automodule:: credsweeper.file_handler.content_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.data\_content\_provider module -------------------------------------------------------- .. automodule:: credsweeper.file_handler.data_content_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.descriptor module ------------------------------------------- .. automodule:: credsweeper.file_handler.descriptor :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.diff\_content\_provider module -------------------------------------------------------- .. automodule:: credsweeper.file_handler.diff_content_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.file\_path\_extractor module ------------------------------------------------------ .. automodule:: credsweeper.file_handler.file_path_extractor :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.files\_provider module ------------------------------------------------ .. automodule:: credsweeper.file_handler.files_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.patches\_provider module -------------------------------------------------- .. automodule:: credsweeper.file_handler.patches_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.string\_content\_provider module ---------------------------------------------------------- .. automodule:: credsweeper.file_handler.string_content_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.struct\_content\_provider module ---------------------------------------------------------- .. automodule:: credsweeper.file_handler.struct_content_provider :members: :undoc-members: :show-inheritance: credsweeper.file\_handler.text\_content\_provider module -------------------------------------------------------- .. automodule:: credsweeper.file_handler.text_content_provider :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.file_handler :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.filters.group.rst ================================================ credsweeper.filters.group package ================================= Submodules ---------- credsweeper.filters.group.general\_keyword module ------------------------------------------------- .. automodule:: credsweeper.filters.group.general_keyword :members: :undoc-members: :show-inheritance: credsweeper.filters.group.general\_pattern module ------------------------------------------------- .. automodule:: credsweeper.filters.group.general_pattern :members: :undoc-members: :show-inheritance: credsweeper.filters.group.group module -------------------------------------- .. automodule:: credsweeper.filters.group.group :members: :undoc-members: :show-inheritance: credsweeper.filters.group.password\_keyword module -------------------------------------------------- .. automodule:: credsweeper.filters.group.password_keyword :members: :undoc-members: :show-inheritance: credsweeper.filters.group.token\_pattern module ----------------------------------------------- .. automodule:: credsweeper.filters.group.token_pattern :members: :undoc-members: :show-inheritance: credsweeper.filters.group.url\_credentials\_group module -------------------------------------------------------- .. automodule:: credsweeper.filters.group.url_credentials_group :members: :undoc-members: :show-inheritance: credsweeper.filters.group.weird\_base36\_token module ----------------------------------------------------- .. automodule:: credsweeper.filters.group.weird_base36_token :members: :undoc-members: :show-inheritance: credsweeper.filters.group.weird\_base64\_token module ----------------------------------------------------- .. automodule:: credsweeper.filters.group.weird_base64_token :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.filters.group :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.filters.rst ================================================ credsweeper.filters package =========================== Subpackages ----------- .. toctree:: :maxdepth: 4 credsweeper.filters.group Submodules ---------- credsweeper.filters.filter module --------------------------------- .. automodule:: credsweeper.filters.filter :members: :undoc-members: :show-inheritance: credsweeper.filters.line\_git\_binary\_check module --------------------------------------------------- .. automodule:: credsweeper.filters.line_git_binary_check :members: :undoc-members: :show-inheritance: credsweeper.filters.line\_specific\_key\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.line_specific_key_check :members: :undoc-members: :show-inheritance: credsweeper.filters.line\_uue\_part\_check module ------------------------------------------------- .. automodule:: credsweeper.filters.line_uue_part_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_allowlist\_check module -------------------------------------------------- .. automodule:: credsweeper.filters.value_allowlist_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_array\_dictionary\_check module ---------------------------------------------------------- .. automodule:: credsweeper.filters.value_array_dictionary_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_atlassian\_token\_check module --------------------------------------------------------- .. automodule:: credsweeper.filters.value_atlassian_token_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_azure\_token\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.value_azure_token_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_base32\_data\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.value_base32_data_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_base64\_data\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.value_base64_data_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_base64\_encoded\_pem\_check module ------------------------------------------------------------- .. automodule:: credsweeper.filters.value_base64_encoded_pem_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_base64\_key\_check module ---------------------------------------------------- .. automodule:: credsweeper.filters.value_base64_key_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_base64\_part\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.value_base64_part_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_basic\_auth\_check module ---------------------------------------------------- .. automodule:: credsweeper.filters.value_basic_auth_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_blocklist\_check module -------------------------------------------------- .. automodule:: credsweeper.filters.value_blocklist_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_camel\_case\_check module ---------------------------------------------------- .. automodule:: credsweeper.filters.value_camel_case_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_dictionary\_keyword\_check module ------------------------------------------------------------ .. automodule:: credsweeper.filters.value_dictionary_keyword_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_discord\_bot\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.value_discord_bot_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_entropy\_base32\_check module -------------------------------------------------------- .. automodule:: credsweeper.filters.value_entropy_base32_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_entropy\_base36\_check module -------------------------------------------------------- .. automodule:: credsweeper.filters.value_entropy_base36_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_entropy\_base64\_check module -------------------------------------------------------- .. automodule:: credsweeper.filters.value_entropy_base64_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_entropy\_base\_check module ------------------------------------------------------ .. automodule:: credsweeper.filters.value_entropy_base_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_file\_path\_check module --------------------------------------------------- .. automodule:: credsweeper.filters.value_file_path_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_github\_check module ----------------------------------------------- .. automodule:: credsweeper.filters.value_github_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_grafana\_check module ------------------------------------------------ .. automodule:: credsweeper.filters.value_grafana_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_grafana\_service\_check module --------------------------------------------------------- .. automodule:: credsweeper.filters.value_grafana_service_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_hex\_number\_check module ---------------------------------------------------- .. automodule:: credsweeper.filters.value_hex_number_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_jfrog\_token\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.value_jfrog_token_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_json\_web\_key\_check module ------------------------------------------------------- .. automodule:: credsweeper.filters.value_json_web_key_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_json\_web\_token\_check module --------------------------------------------------------- .. automodule:: credsweeper.filters.value_json_web_token_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_last\_word\_check module --------------------------------------------------- .. automodule:: credsweeper.filters.value_last_word_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_length\_check module ----------------------------------------------- .. automodule:: credsweeper.filters.value_length_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_method\_check module ----------------------------------------------- .. automodule:: credsweeper.filters.value_method_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_morphemes\_check module -------------------------------------------------- .. automodule:: credsweeper.filters.value_morphemes_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_not\_allowed\_pattern\_check module -------------------------------------------------------------- .. automodule:: credsweeper.filters.value_not_allowed_pattern_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_not\_part\_encoded\_check module ----------------------------------------------------------- .. automodule:: credsweeper.filters.value_not_part_encoded_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_number\_check module ----------------------------------------------- .. automodule:: credsweeper.filters.value_number_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_pattern\_check module ------------------------------------------------ .. automodule:: credsweeper.filters.value_pattern_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_sealed\_secret\_check module ------------------------------------------------------- .. automodule:: credsweeper.filters.value_sealed_secret_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_search\_check module ----------------------------------------------- .. automodule:: credsweeper.filters.value_search_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_similarity\_check module --------------------------------------------------- .. automodule:: credsweeper.filters.value_similarity_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_split\_keyword\_check module ------------------------------------------------------- .. automodule:: credsweeper.filters.value_split_keyword_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_string\_type\_check module ----------------------------------------------------- .. automodule:: credsweeper.filters.value_string_type_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_token\_base32\_check module ------------------------------------------------------ .. automodule:: credsweeper.filters.value_token_base32_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_token\_base36\_check module ------------------------------------------------------ .. automodule:: credsweeper.filters.value_token_base36_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_token\_base64\_check module ------------------------------------------------------ .. automodule:: credsweeper.filters.value_token_base64_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_token\_base\_check module ---------------------------------------------------- .. automodule:: credsweeper.filters.value_token_base_check :members: :undoc-members: :show-inheritance: credsweeper.filters.value\_token\_check module ---------------------------------------------- .. automodule:: credsweeper.filters.value_token_check :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.filters :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.logger.rst ================================================ credsweeper.logger package ========================== Submodules ---------- credsweeper.logger.logger module -------------------------------- .. automodule:: credsweeper.logger.logger :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.logger :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.ml_model.features.rst ================================================ credsweeper.ml\_model.features package ====================================== Submodules ---------- credsweeper.ml\_model.features.entropy\_evaluation module --------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.entropy_evaluation :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.feature module --------------------------------------------- .. automodule:: credsweeper.ml_model.features.feature :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.file\_extension module ----------------------------------------------------- .. automodule:: credsweeper.ml_model.features.file_extension :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.has\_html\_tag module ---------------------------------------------------- .. automodule:: credsweeper.ml_model.features.has_html_tag :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.is\_secret\_numeric module --------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.is_secret_numeric :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.length\_of\_attribute module ----------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.length_of_attribute :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.morpheme\_dense module ----------------------------------------------------- .. automodule:: credsweeper.ml_model.features.morpheme_dense :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.rule\_name module ------------------------------------------------ .. automodule:: credsweeper.ml_model.features.rule_name :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.rule\_severity module ---------------------------------------------------- .. automodule:: credsweeper.ml_model.features.rule_severity :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.search\_in\_attribute module ----------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.search_in_attribute :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.word\_in module ---------------------------------------------- .. automodule:: credsweeper.ml_model.features.word_in :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.word\_in\_path module ---------------------------------------------------- .. automodule:: credsweeper.ml_model.features.word_in_path :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.word\_in\_postamble module --------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.word_in_postamble :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.word\_in\_preamble module -------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.word_in_preamble :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.word\_in\_transition module ---------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.word_in_transition :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.word\_in\_value module ----------------------------------------------------- .. automodule:: credsweeper.ml_model.features.word_in_value :members: :undoc-members: :show-inheritance: credsweeper.ml\_model.features.word\_in\_variable module -------------------------------------------------------- .. automodule:: credsweeper.ml_model.features.word_in_variable :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.ml_model.features :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.ml_model.rst ================================================ credsweeper.ml\_model package ============================= Subpackages ----------- .. toctree:: :maxdepth: 4 credsweeper.ml_model.features Submodules ---------- credsweeper.ml\_model.ml\_validator module ------------------------------------------ .. automodule:: credsweeper.ml_model.ml_validator :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.ml_model :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.rst ================================================ Credsweeper package =================== CredSweeper ----------- .. toctree:: :maxdepth: 4 .. automodule:: credsweeper.app :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.rules.rst ================================================ credsweeper.rules package ========================= Submodules ---------- credsweeper.rules.rule module ----------------------------- .. automodule:: credsweeper.rules.rule :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.rules :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.scanner.rst ================================================ credsweeper.scanner package =========================== Subpackages ----------- .. toctree:: :maxdepth: 4 credsweeper.scanner.scan_type Submodules ---------- credsweeper.scanner.scanner module ---------------------------------- .. automodule:: credsweeper.scanner.scanner :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.scanner :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.scanner.scan_type.rst ================================================ credsweeper.scanner.scan\_type package ====================================== Submodules ---------- credsweeper.scanner.scan\_type.multi\_pattern module ---------------------------------------------------- .. automodule:: credsweeper.scanner.scan_type.multi_pattern :members: :undoc-members: :show-inheritance: credsweeper.scanner.scan\_type.pem\_key\_pattern module ------------------------------------------------------- .. automodule:: credsweeper.scanner.scan_type.pem_key_pattern :members: :undoc-members: :show-inheritance: credsweeper.scanner.scan\_type.scan\_type module ------------------------------------------------ .. automodule:: credsweeper.scanner.scan_type.scan_type :members: :undoc-members: :show-inheritance: credsweeper.scanner.scan\_type.single\_pattern module ----------------------------------------------------- .. automodule:: credsweeper.scanner.scan_type.single_pattern :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.scanner.scan_type :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/credsweeper.utils.rst ================================================ credsweeper.utils package ========================= Submodules ---------- credsweeper.utils.hop\_stat module ---------------------------------- .. automodule:: credsweeper.utils.hop_stat :members: :undoc-members: :show-inheritance: credsweeper.utils.pem\_key\_detector module ------------------------------------------- .. automodule:: credsweeper.utils.pem_key_detector :members: :undoc-members: :show-inheritance: credsweeper.utils.util module ----------------------------- .. automodule:: credsweeper.utils.util :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: credsweeper.utils :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/source/develop.rst ================================================ Develop ======= Tests ----- To run all tests: .. code-block:: bash python -m pytest -s tests/ Benchmark --------- We have a dataset for testing credential scanners that called `CredData `_. If you want to test CredSweeper with this dataset please check `here `_. ================================================ FILE: docs/source/guide.rst ================================================ How To Use ========== Run --- Get all argument list: .. code-block:: bash python -m credsweeper --help .. code-block:: text usage: python -m credsweeper [-h] (--path PATH [PATH ...] | --diff_path PATH [PATH ...] | --export_config [PATH] | --export_log_config [PATH] | --git PATH) [--ref REF] [--rules PATH] [--severity SEVERITY] [--config PATH] [--log_config PATH] [--denylist PATH] [--find-by-ext] [--pedantic | --no-pedantic] [--depth POSITIVE_INT] [--no-filters] [--doc] [--ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO] [--ml_batch_size POSITIVE_INT] [--ml_config PATH] [--ml_model PATH] [--ml_providers STR] [--jobs POSITIVE_INT] [--thrifty | --no-thrifty] [--skip_ignored] [--error | --no-error] [--save-json [PATH]] [--save-xlsx [PATH]] [--stdout | --no-stdout] [--color | --no-color] [--hashed | --no-hashed] [--subtext | --no-subtext] [--sort | --no-sort] [--log LOG_LEVEL] [--size_limit SIZE_LIMIT] [--banner] [--version] options: -h, --help show this help message and exit --path PATH [PATH ...] file or directory to scan --diff_path PATH [PATH ...] git diff file to scan --export_config [PATH] exporting default config to file (default: config.json) --export_log_config [PATH] exporting default logger config to file (default: log.yaml) --git PATH git repo to scan --ref REF scan git repo from the ref, otherwise - all branches were scanned (slow) --rules PATH path of rule config file (default: credsweeper/rules/config.yaml). severity:['critical', 'high', 'medium', 'low', 'info'] type:['keyword', 'pattern', 'pem_key', 'multi'] --severity SEVERITY set minimum level for rules to apply ['critical', 'high', 'medium', 'low', 'info'](default: 'Severity.INFO', case insensitive) --config PATH use custom config (default: built-in) --log_config PATH use custom log config (default: built-in) --denylist PATH path to a plain text file with lines or secrets to ignore --find-by-ext find files by predefined extension --pedantic, --no-pedantic process files without extension (default: False) --depth POSITIVE_INT additional recursive search in data (experimental) --no-filters disable filters --doc document-specific scanning --ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO setup threshold for the ml model. The lower the threshold - the more credentials will be reported. Allowed values: float between 0 and 1, or any of ['lowest', 'low', 'medium', 'high', 'highest'] (default: medium) --ml_batch_size POSITIVE_INT, -b POSITIVE_INT batch size for model inference (default: 16) --ml_config PATH use external config for ml model --ml_model PATH use external ml model --ml_providers STR comma separated list of providers for onnx (CPUExecutionProvider is used by default) --jobs POSITIVE_INT, -j POSITIVE_INT number of parallel processes to use (default: 1) --thrifty, --no-thrifty clear objects after scan to reduce memory consumption (default: True) --skip_ignored parse .gitignore files and skip credentials from ignored objects --error, --no-error produce error code if credentials are found (default: False) --save-json [PATH] save result to json file (default: output.json) --save-xlsx [PATH] save result to xlsx file (default: output.xlsx) --stdout, --no-stdout print results to stdout (default: True) --color, --no-color print results with colorization (default: False) --hashed, --no-hashed line, variable, value will be hashed in output (default: False) --subtext, --no-subtext line text will be stripped in 128 symbols but value and variable are kept (default: False) --sort, --no-sort enable output sorting (default: False) --log LOG_LEVEL, -l LOG_LEVEL provide logging level of ['DEBUG', 'INFO', 'WARN', 'WARNING', 'ERROR', 'FATAL', 'CRITICAL', 'SILENCE'] (default: 'warning', case insensitive) --size_limit SIZE_LIMIT set size limit of files that for scanning (eg. 1GB / 10MiB / 1000) --banner show version and crc32 sum of CredSweeper files at start --version, -V show program's version number and exit .. note:: Validation by `ML model classifier `_ is used to reduce False Positives (by far), but might increase False negatives and execution time. You may change system sensitivity by modifying --ml_threshold argument. Increasing threshold will decrease the number of alerts. Setting `--ml_threshold 0` will turn ML off and will maximize the number of alerts. Typical False Positives: `password = "template_password"` .. note:: CredSweeper includes an experimental `--depth` option that enables scanning with awareness of specific data formats, such as: - Compressed files (zip, gzip, bzip2, lzma) - Data containers (deb, tar, Docker images, pkcs12, jks) - Document rendering (pdf, xls, ods, xlsx, docx, pptx, tm7, mxfile) - Base64-encoded content - Structured text formats (HTML, XML, JSON, NDJSON, YAML, etc.) - keys and values are combined before analysis - Python sources - reformatting source code to plain code style to avoid cases which may hide values from patterns ("AKIA" "EXAMPLE..." -> "AKIAEXAMPLE...") **Remark:** The reported line number for a found credential with the option may not correspond to the original file. The `info` field provides context to help you understand how the credential was detected. Get output as JSON file with deep scan for docker image: Prepare dockerfile .. code-block:: docker FROM scratch ADD tests/samples / Build, save and scan .. code-block:: bash docker build . --tag test_samples docker save test_samples --output test_samples.docker python -m credsweeper --path test_samples.docker --save-json output.json --depth 3 Review the report file (output.json): .. code-block:: json [ ... { "rule": "Password", "severity": "medium", "confidence": "moderate", "ml_probability": 0.7925280332565308, "line_data_list": [ { "line": "password = 'cackle!'", "line_num": 1, "path": "test_samples.docker", "info": "FILE:test_samples.docker|TAR:blobs/sha256/82a4962c3cfebb62a42c2fd5c120ea0706a9ae66f52f71f957c052c873c60775|TAR:password.gradle|STRUCT|STRING:0|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 12, "value_end": 19, "entropy": 2.52164 } ] }, ... ] Get CLI output only: .. code-block:: bash python -m credsweeper --path tests/samples/password.gradle .. code-block:: text rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9149653911590576 | line_data_list: [path: tests/samples/password.gradle | line_num: 1 | value: 'cackle!' | line: 'password = "cackle!"'] Exclude outputs using CLI: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you want to remove some values from report (e.g. known public secrets): create text files with lines or values you want to remove and add it using `--denylist` argument. Space-like characters at left and right will be ignored. .. code-block:: bash $ python -m credsweeper --path tests/samples/password.gradle --denylist list.txt Detected Credentials: 0 Time Elapsed: 0.07523202896118164s $ cat list.txt cackle! password = "cackle!" Exclude outputs using config: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Edit ``exclude`` part of the config file. Default config can be generated using ``python -m credsweeper --export_config place_to_save.json`` or can be found in ``credsweeper/secret/config.json``. Space-like characters at left and right will be ignored. .. code-block:: json "exclude": { "lines": [" password = \"cackle!\" "], "values": ["cackle!"] } Then specify your config in CLI: .. code-block:: bash $ python -m credsweeper --path tests/samples/password.gradle --config my_cfg.json Detected Credentials: 0 Time Elapsed: 0.07152628898620605s Use as a python library ----------------------- Minimal example for scanning line list: .. code-block:: python from credsweeper import CredSweeper, StringContentProvider to_scan = ["line one", "password='in_line_2'"] cred_sweeper = CredSweeper() provider = StringContentProvider(to_scan) results = cred_sweeper.file_scan(provider) for r in results: print(r) .. code-block:: text rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9857242107391357 | line_data_list: [line: 'password = "cackle!"' | line_num: 1 | path: | value: 'cackle!' | entropy_validation: BASE64STDPAD_CHARS 2.120590 False] Minimal example for scanning bytes: .. code-block:: python from credsweeper import CredSweeper, ByteContentProvider to_scan = b"line one\npassword='cackle!'" cred_sweeper = CredSweeper() provider = ByteContentProvider(to_scan) results = cred_sweeper.file_scan(provider) for r in results: print(r) .. code-block:: text rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9857242107391357 | line_data_list: [line: 'password = "cackle!"' | line_num: 2 | path: | value: 'cackle!' | entropy_validation: BASE64STDPAD_CHARS 2.120590 False] Minimal example for the ML validation: .. code-block:: python from credsweeper import CredSweeper, StringContentProvider, MlValidator, ThresholdPreset to_scan = ["line one", "password='cackle!'", "secret='template'"] cred_sweeper = CredSweeper() provider = StringContentProvider(to_scan) # You can select lower or higher threshold to get more or less reports respectively threshold = ThresholdPreset.medium validator = MlValidator(threshold=threshold) results = cred_sweeper.file_scan(provider) for candidate in results: # For each results detected by a CredSweeper, you can validate them using MlValidator is_credential, with_probability = validator.validate(candidate) if is_credential: print(candidate) Note that `"secret='template'"` is not reported due to failing check by the `MlValidator`. .. code-block:: text rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9857242107391357 | line_data_list: [line: 'password = "cackle!"' | line_num: 2 | path: | value: 'cackle!' | entropy_validation: BASE64STDPAD_CHARS 2.120590 False] Configurations -------------- .. toctree:: :maxdepth: 1 apps_config .. toctree:: :maxdepth: 1 rules_config ================================================ FILE: docs/source/how_to_contribute.rst ================================================ How To Contribute ================= .. include:: ../howto/how-to-contribute.md :parser: myst_parser.sphinx_ ================================================ FILE: docs/source/index.rst ================================================ .. |CredSweeper_logo| image:: ../images/Logo.png :width: 100 :alt: Alternative text |CredSweeper_logo| Welcome to CredSweeper's documentation! ======================================= CredSweeper is a tool to detect credentials in any directories or files. CredSweeper could help users to detect unwanted exposure of credentials (such as personal information, token, passwords, api keys and etc) in advance. By scanning lines, filtering, and using AI model as option, CredSweeper reports lines with possible credentials, where the line is, and expected type of the credential as a result. How To Use ========== .. toctree:: :maxdepth: 2 guide Installation ============ .. toctree:: :maxdepth: 2 install Develop ======= .. toctree:: :maxdepth: 2 develop How to Contribute ================= .. toctree:: :maxdepth: 2 how_to_contribute Overall architecture ==================== .. toctree:: :maxdepth: 2 overall_architecture API Reference ============= If you are looking for information on a specific function, class or method, this part of the documentation is for you. .. toctree:: :maxdepth: 2 api Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ================================================ FILE: docs/source/install.rst ================================================ Installation ============ Currently `CredSweeper` requires the following prerequisites: * Python version 3.10, 3.11, 3.12 .. note:: We recommend to use credsweeper in a separate virtual enviroment. Some heave dependencies as Tensorflow might create a conflict with other dependencies othervise Via pip ------- .. code-block:: bash pip install credsweeper .. note:: If you didn't installed git, you may encounter the following error: .. code-block:: bash ... All git commands will error until this is rectified. This initial warning can be silenced or aggravated in the future by setting the $GIT_PYTHON_REFRESH environment variable. Use one of the following values: - quiet|q|silence|s|none|n|0: for no warning or exception - warn|w|warning|1: for a printed warning - error|e|raise|r|2: for a raised exception Example: export GIT_PYTHON_REFRESH=quiet If so, please install git. .. code-block:: bash sudo apt install git .. note:: Allows to use `ML model classifier `_ to validate credential candidates, but requires setup of additional packages: numpy, scikit-learn and tensorflow. Via git clone (dev install) --------------------------- .. code-block:: bash git clone https://github.com/Samsung/CredSweeper.git cd CredSweeper # Annotate "onnxruntime" if you don't want to use the ML validation feature. pip install -qr requirements.txt Pre-commit git hook --------------------------- Install CredSweeper into system and copy ``pre-commit`` file in your ``.git/hooks`` repo. .. note:: CredSweeper must be available in current python environment. .. note:: pre-commit file context: .. code-block:: python #!/usr/bin/env python import io import subprocess import sys from credsweeper import CredSweeper from credsweeper.common.constants import DiffRowType from credsweeper.file_handler.patch_provider import PatchProvider def main() -> int: command = ["git", "diff", "--cached"] with subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as pipe: _stdout, _stderr = pipe.communicate() if pipe.returncode: print(str(_stdout), flush=True) print(str(_stderr), flush=True) print(f"{command} EXIT CODE:{pipe.returncode}", flush=True) return 1 patch = io.BytesIO(_stdout) added = PatchProvider([patch], change_type=DiffRowType.ADDED) deleted = PatchProvider([patch], change_type=DiffRowType.DELETED) credsweeper = CredSweeper() if credsweeper.run(content_provider=deleted): print(f"CREDENTIALS FOUND IN DELETED CONTENT", flush=True) # return 1 # <<< UNCOMMENT THE LINE IF YOU WANT TO MANAGE DELETED CREDENTIALS if credsweeper.run(content_provider=added): print(f"CREDENTIALS FOUND IN ADDED CONTENT", flush=True) return 1 return 0 if __name__ == "__main__": sys.exit(main()) Or use pre-commit with ``.pre-commit-config.yaml`` in your repo: .. code-block:: none repos: - repo: https://github.com/Samsung/CredSweeper rev: v1.10.6 hooks: - id: CredSweeper Install with: ``pre-commit install --install-hooks`` ================================================ FILE: docs/source/overall_architecture.rst ================================================ Overall Architecture ==================== CredSweeper is largely composed of 3 parts as follows. (Pre-processing_, Scan_, `ML validation`_) .. image:: https://raw.githubusercontent.com/Samsung/CredSweeper/main/docs/images/Architecture.png Pre-processing -------------- When paths to scan are entered, get the files in that paths and the files are excluded based on the list created by `config.json `_. **config.json** - exclude - pattern: Regex patterns to exclude scan. - containers: Extensions in lower case of container files which might be scan with --depth option - documents: Extensions in lower case of container files which might be scan with --doc and/or --depth option - extension: Extensions in lower case to exclude scan. - path: Paths to exclude scan. - source_ext: List of extensions for scanning categorized as source files. - source_quote_ext: List of extensions for scanning categorized as source files that using quote. - find_by_ext_list: List of extensions to detect only extensions. - check_for_literals: Bool value for whether to check line has string literal declaration or not. - line_data_output: List of attributes of `line_data `_ for output. - candidate_output: List of attributes of `candidate `_ for output. .. code-block:: text ... "exclude": { "pattern": [ ... ], "containers": [ ".gz", ".zip", ... ], "documents": [ ".docx", ".pdf", ... ], "extension": [ ".7z", ".jpg", ... ], "path": [ "/.git/", "/.idea/", ... ] } ... Scan ---- Basically, scanning is performed for each file path, and it is performed based on the Rule_. Scanning method differs from scan type of the Rule_, which is assigned when the Rule_ is generated. There are 3 scan types: `SinglePattern `_, `MultiPattern `_, and `PEMKeyPattern `_. Below is the description of the each scan type and its scanning method. - `SinglePattern `_ - When : The Rule_ has only 1 pattern. - How : Check if a single line Rule pattern present in the line. - `MultiPattern `_ - When : The Rule_ has 2 patterns. - How : Check if a line is a part of a multi-line credential and the remaining part exists within 10 lines below. - `PEMKeyPattern `_ - When : The Rule_ type is `pem_key`. - How : Check if a line’s entropy is high enough and the line have no substring with 5 same consecutive characters. (like 'AAAAA') Rule ---- Each Rule_ is dedicated to detect a specific type of credential, imported from `config.yaml `_ at the runtime. **config.yaml** .. code-block:: yaml ... - name: API severity: medium confidence: moderate type: keyword values: - api filter_type: GeneralKeyword use_ml: true min_line_len: 11 required_substrings: - api target: - code ... **Rule Attributes** - severity - `Severity `_ .. code-block:: python ... class Severity(Enum): CRITICAL = "critical" HIGH = "high" MEDIUM = "medium" LOW = "low" ... - confidence - `Confidence `_ - The manually configured value indicates the confidence that the found candidate could be the credential type. .. code-block:: python ... class Confidence(Enum): STRONG = "strong" MODERATE = "moderate" WEAK = "weak" ... - type - `RuleType `_ .. code-block:: python ... class RuleType(Enum): KEYWORD = "keyword" PATTERN = "pattern" PEM_KEY = "pem_key" MULTI = "multi" ... - values - keyword : The keywords you want to detect. If you want to detect multiple keywords, you can write them as follows : `password|passwd|pwd`. - pattern : The patterns you want to detect. For more accurate detection, it is recommended to specify `?P` in the patterns : `(?PAIza[0-9A-Za-z\-_]{35})`. - pem_key : Specific rule to find multiline PEM private keys. - multi : Two patterns you want to detect. Candidate will be found only if second pattern matched nearby. - filter_type - The type of the Filter_ group you want to apply. Filter_ groups implemented are as follows: `GeneralKeyword `_, `GeneralPattern `_, `PasswordKeyword `_, and `UrlCredentials `_. - use_ml - The attribute to set whether to perform ML validation. If true, ML validation will be performed. If false - ml_probability will be set to None in report. - min_line_len - drop too short stripped lines before text search to increase performance - required_substrings - any strings has to be found in a line before regex search to increase performance - target - code : The rule will be applied without --doc option - doc : The rule will be applied with --doc option Filter ------ Check the detected candidates from the formal step. If a candidate is caught by the Filter_, it is removed from the candidates set. There are 21 filters and 4 filter groups. Filter_ group is a set of Filter_s, which is designed to use many Filter_s effectively at the same time. ML validation ------------- CredSweeper provides pre-trained ML models to filter false credential lines. `ML validation` is on by the default and its sensitivity can be adjusted using ``--ml_threshold``: .. code-block:: text --ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO setup threshold for the ml model. The lower the threshold - the more credentials will be reported. Allowed values: float between 0 and 1, or any of ['lowest', 'low', 'medium', 'high', 'highest'] (default: medium) And ML can be fully disable by setting ``--ml_threshold 0`` .. code-block:: bash python -m credsweeper --ml_threshold 0 ... Our ML model architecture is a combination of Bidirectional LSTM with additional handcrafted features. It uses first 80 characters from the potential credential value and variable (if available), 160 characters from line around the value and configurable handcrafted features to decide if it's a real credential or not. Example (file leaked_cred.py): .. code-block:: python my_db_password = "NUU423cds" Steps: 1. Regular expression extracts ```NUU423cds``` as a secret value, ```my_db_password``` as a variable, and ```my_db_password = "NUU423cds"``` as whole line 2. Handcrafted feature classes instantiated from classes in `features.py `_ using `model_config.json `_. Instantiation process can be checked at `ml_validator.py#L46 `_. Features include: ``` ``` character in line: yes/no, ```(``` character in line: yes/no, file extension is ```.c```: yes/no, etc. 3. Handcrafted features from step 2 used on line, value, variable, and filename to get feature vector of length 91 4. ```NUU423cds``` Configurable character set is applied + 1 padding character + 1 special character for all other symbols. Padded line than `one-hot encoded `_. Link to corresponding code: `MlValidator.encode `_ 5. Padded line from step 4 inputted to Bidirectional LSTM of value. The same encodings are performed for variable and line. LSTM produce 3 single vectors of lengths 80, 80, 160 as outputs 6. LSTM outputs and handcrafted features concatenated into a single vector 7. The vector from step 6 is fed into a stack of two sequential Dense layers, each with the number of output units equal to the number of input units. 8. Last layer outputs float value in range 0-1 with estimated probability of line being a real credential 9. Predicted probability compared to the threshold (see `--ml_threshold` CLI option) and credential reported if predicted probability is greater .. image:: https://raw.githubusercontent.com/Samsung/CredSweeper/main/docs/images/Model_with_features.png Additional: - Handcrafted features are based on the rules described in `"Secrets in Source Code" publication `_. .. code-block:: text @INPROCEEDINGS{9027350, author={Saha, Aakanksha and Denning, Tamara and Srikumar, Vivek and Kasera, Sneha Kumar}, booktitle={2020 International Conference on COMmunication Systems NETworkS (COMSNETS)}, title={Secrets in Source Code: Reducing False Positives using Machine Learning}, year={2020}, pages={168-175}, doi={10.1109/COMSNETS48256.2020.9027350} } - Mapping between text threshold values and float can be found at `model_config.json#L2 `_. Values are based on F-0.25, F-0.5, F-1, F-2 and F-4 scores on `CredData test `_ ================================================ FILE: docs/source/rules_config.rst ================================================ Rules Configuration =================== .. literalinclude:: ../../credsweeper/rules/config.yaml :language: yaml :linenos: ================================================ FILE: experiment/README.md ================================================ # Train credential detection model This code will allow you to retrain model on the CredData dataset ## Preparation - Make sure that you are using Python 3.10 or higher - Download CredData dataset ```bash git clone https://github.com/Samsung/CredData cd CredData python download_data.py --data_dir data ``` - Go back to `CredSweeper/experiment` directory - Install the additional requirements ```bash pip install -r requirements.txt ``` - Make sure that `credsweeper` in the `PYTHONPATH`. You can add it with ```bash export PYTHONPATH=:$PYTHONPATH ``` Example: ```bash export PYTHONPATH=/home/user/code/CredSweeper:$PYTHONPATH ``` ## Run - Launch the experiment with ```bash python main.py --data -j ``` Example: ```bash python main.py --data /home/user/datasets/CredData -j 16 ``` - Resulting model will be saved to `results/ml_model_at-`. You now can convert the model to onnx: ```bash python -m tf2onnx.convert --saved-model results/ml_model_at-20240225_111951 --output ../credsweeper/ml_model/ml_model.onnx --verbose ``` ================================================ FILE: experiment/__init__.py ================================================ ================================================ FILE: experiment/data_loader.py ================================================ import contextlib import json import os import pathlib from copy import deepcopy from functools import cache from typing import Tuple, Dict, Set, Any import numpy as np import pandas as pd from colorama import Fore, Style, Back from credsweeper.common.constants import ML_HUNK from credsweeper.utils.util import Util # path, line, val_start, val_end identifier = Tuple[str, int, int, int] def transform_to_meta_path(file_path: pathlib.Path): """Transform any path to '......./data/xxxxxxxx/[type]...../yyyyyyyy.ext' to find in meta markup""" file_path = pathlib.Path(file_path).as_posix() path_list = file_path.split('/') assert path_list.count("data") == 1, file_path # only one "data" directory allowed meta_path = "" for n, x in enumerate(path_list): if x == "data": meta_path = '/'.join(path_list[n:]) break assert meta_path, f"data dir was not found in {file_path}" # just extra check return meta_path def read_detected_data(file_path: pathlib.Path) -> Dict[identifier, Dict]: print(f"Reading detections from {file_path}", flush=True) with open(file_path) as f: detections = json.load(f) detected_lines = {} for cred in detections: rule_name = cred["rule"] # skip not ML values like private keys and so on. Unsupported for ml train. "use_ml" rules ONLY assert 0 < len(cred["line_data_list"]), cred # at least, one line_data_list must present line_data = deepcopy(cred["line_data_list"][0]) line_data.pop("entropy") line_data.pop("info") line_data["line"] = None # will be read during join_label with data for ML input only meta_path = transform_to_meta_path(line_data["path"]) line_data["path"] = meta_path line_data["RuleName"] = [rule_name] index = meta_path, line_data["line_num"], line_data["value_start"], line_data["value_end"] if index not in detected_lines: detected_lines[index] = line_data else: detected_lines[index]["RuleName"].append(rule_name) print(f"Detected {len(detected_lines)} unique lines!", flush=True) print(f"{len(detections)} detections in total", flush=True) return detected_lines def read_metadata(meta_dir: str) -> Dict[identifier, Dict]: print(f"Reading meta from {meta_dir}", flush=True) meta_lines = {} j = 0 for file_path in os.listdir(meta_dir): csv_file = os.path.join(meta_dir, file_path) if not file_path.endswith(".csv"): print(f"skip garbage: {csv_file}", flush=True) continue try: df = pd.read_csv(csv_file, dtype={ "RepoName": str, "GroundTruth": str, "Category": str, "LineStart": "Int64", "LineEnd": "Int64", "ValueStart": "Int64", "ValueEnd": "Int64", }) except Exception as exc: print(csv_file, exc, flush=True) raise # Int64 is important to change with NaN df["LineStart"] = df["LineStart"].fillna(-1).astype(int) df["LineEnd"] = df["LineEnd"].fillna(-1).astype(int) df["ValueStart"] = df["ValueStart"].fillna(-1).astype(int) df["ValueEnd"] = df["ValueEnd"].fillna(-1).astype(int) # all templates are false df.loc[df["GroundTruth"] != 'T', "GroundTruth"] = 'F' for _, row in df.iterrows(): j += 1 if row["LineStart"] != row["LineEnd"] \ or all(x in ["AWS Multi", "Google Multi"] for x in row["Category"].split(':')): # print(f"WARNING: skip not ml category {row['FilePath']},{line_start},{line_end}" # f",{row['GroundTruth']},{row['Category']}", flush=True) continue assert 'F' == row["GroundTruth"] or 'T' == row["GroundTruth"] and 0 <= row["ValueStart"], row meta_path = transform_to_meta_path(row["FilePath"]) index = meta_path, row['LineStart'], row['ValueStart'], row['ValueEnd'] if index not in meta_lines: row_data = row.to_dict() row_data["Used"] = False row_data["FilePath"] = meta_path meta_lines[index] = row_data else: print( f"WARNING: {index} already in meta_lines {row['GroundTruth']} {row['Category']}" f"\n{meta_lines[index]}", flush=True) print(f"Loaded {len(meta_lines)} lines from meta of {j} total", flush=True) return meta_lines def get_colored_line(line_data: Dict[str, Any]) -> str: val_start = int(line_data['value_start']) val_end = int(line_data['value_end']) colored_line = line_data['line'][:val_start] \ + Fore.LIGHTYELLOW_EX \ + line_data['line'][val_start:val_end] \ + Style.RESET_ALL \ + line_data['line'][val_end:] with contextlib.suppress(Exception): var_start = int(line_data['variable_start']) var_end = int(line_data['variable_end']) if 0 <= var_start < var_end: colored_line = colored_line[:var_start] \ + Fore.LIGHTBLUE_EX \ + colored_line[var_start:var_end] \ + Style.RESET_ALL \ + colored_line[var_end:] colored_sub_line = Util.subtext(colored_line, line_data['value_start'], ML_HUNK) return f"{colored_sub_line}{Style.RESET_ALL}" def join_label(detected_data: Dict[identifier, Dict], meta_data: Dict[identifier, Dict], cred_data_location: str) -> pd.DataFrame: @cache def read_text(path) -> list[str]: with open(path, "r", encoding="utf8") as f: return f.read().replace("\r\n", '\n').replace('\r', '\n').split('\n') positive_lines = set((x[0], x[1]) for x, y in meta_data.items() if 'T' == y["GroundTruth"]) values = [] detected_rules: Set[str] = set() for index, line_data in detected_data.items(): for i in line_data["RuleName"]: detected_rules.add(i) text = read_text(f'{cred_data_location}/{line_data["path"]}') line = text[line_data["line_num"] - 1] line_data["line"] = line if not line_data["value"]: print(f"WARNING: empty value\n{line_data}", flush=True) continue label = False if markup := meta_data.get(index): # it means index in meta_data with exactly match if 'T' == markup["GroundTruth"]: label = True markup["Used"] = True markup_rules = markup["Category"].split(':') if not set(markup_rules).intersection(set(line_data["RuleName"])): print(f"1.CHECK CATEGORIES\n{markup_rules}, {line_data['RuleName']}\n{str(markup)}" + get_colored_line(line_data), flush=True) elif markup := meta_data.get((index[0], index[1], index[2], -1)): # perhaps, the line has only start markup - so value end position is -1 if 'T' == markup["GroundTruth"]: label = True markup["Used"] = True markup_rules = markup["Category"].split(':') if not set(markup["Category"].split(':')).intersection(set(line_data["RuleName"])): print(f"2.CHECK CATEGORIES\n{markup_rules}, {line_data['RuleName']}\n{str(markup)}" + get_colored_line(line_data), flush=True) elif markup := meta_data.get((index[0], index[1], -1, -1)): # perhaps, the line has false markup - so value start-end position is -1, -1 if 'T' == markup["GroundTruth"]: raise RuntimeError(f"ERROR: markup {markup} cannot be TRUE\n{line_data}") markup["Used"] = True markup_rules = markup["Category"].split(':') if not set(markup["Category"].split(':')).intersection(set(line_data["RuleName"])): print(f"3.CHECK CATEGORIES\n{markup_rules}, {line_data['RuleName']}\n{str(markup)}" + get_colored_line(line_data), flush=True) elif (index[0], index[1]) in positive_lines: print(f"WARNING: {index} is not in meta!!! {Fore.LIGHTRED_EX}CHECK THE NEGATIVE CASE{Style.RESET_ALL}\n" + get_colored_line(line_data), flush=True) else: print(f"WARNING: {index} is not in meta!!! IT WILL BE USED AS NEGATIVE CASE\n" + get_colored_line(line_data), flush=True) # check the value in detected data assert line[line_data["value_start"]:line_data["value_end"]] == line_data["value"], ( line_data, line[line_data["value_start"]:line_data["value_end"]], line_data["value"]) # todo: variable input has to be markup in meta too, or/and new feature "VariableExists" created ??? line_data["GroundTruth"] = label # auxiliary field for model_config_preprocess # no extra memory usage due the dataframe is deleted before train line_data["ext"] = Util.get_extension(line_data["path"]) values.append(line_data) all_meta_found = True for markup in meta_data.values(): if 'T' == markup["GroundTruth"] and not markup["Used"]: for markup_rule in markup["Category"].split(':'): if markup_rule in detected_rules: if all_meta_found: # print header of the markup once print(f"{Back.MAGENTA}{Fore.BLACK}WARNING: Not all TRUE meta found!{Style.RESET_ALL}", flush=True) print(','.join(markup.keys()), flush=True) all_meta_found = False print(','.join(str(x) for x in markup.values()), flush=True) text = read_text(f'{cred_data_location}/{markup["FilePath"]}') line = text[markup["LineStart"] - 1] if 0 <= markup["ValueStart"] and 0 <= markup["ValueEnd"]: line = line[:markup["ValueStart"]] \ + Fore.LIGHTGREEN_EX \ + line[markup["ValueStart"]:markup["ValueEnd"]] \ + Style.RESET_ALL \ + line[markup["ValueEnd"]:] elif 0 <= markup["ValueStart"]: line = line[:markup["ValueStart"]] \ + Fore.LIGHTGREEN_EX \ + line[markup["ValueStart"]:] \ + Style.RESET_ALL print(line, flush=True) break read_text.cache_clear() df = pd.DataFrame(values) print(f"Initial full dataset: {len(df)} items\n{df.memory_usage(deep=True)}", flush=True) df = df.drop_duplicates(subset=["line", "variable", "value", "path"]) print(f"Full dataset: {len(df)} items after drop duplicates\n{df.memory_usage(deep=True)}", flush=True) return df def get_y_labels(df: pd.DataFrame) -> np.ndarray: true_cases = np.array(df["GroundTruth"], dtype=np.float32) return true_cases ================================================ FILE: experiment/evaluate_model.py ================================================ from typing import List import numpy as np from keras import Model # type: ignore from sklearn.metrics import f1_score, precision_score, recall_score, log_loss, accuracy_score def evaluate_model(thresholds: dict, keras_model: Model, x_data: List[np.ndarray], y_label: np.ndarray): """Evaluate Keras model with printing scores Args: thresholds: dict of credsweeper thresholds keras_model: fitted keras model x_data: List of np.arrays. Number and shape depends on model y_label: expected result """ predictions_proba = keras_model.predict(x_data, verbose=2).ravel() for name, threshold in thresholds.items(): predictions = (predictions_proba > threshold) accuracy = accuracy_score(y_label, predictions) precision = precision_score(y_label, predictions) recall = recall_score(y_label, predictions) loss = log_loss(y_label, predictions) f1 = f1_score(y_label, predictions) print( f"{name}: {threshold:0.6f}, " f"accuracy: {accuracy:0.6f}, " f"precision:{precision:0.6f}, " f"recall: {recall:0.6f}, " f"loss: {loss:0.6f}, " f"F1:{f1:0.6f}", flush=True) ================================================ FILE: experiment/features.py ================================================ from typing import Tuple, Union import numpy as np import pandas as pd from credsweeper.common.constants import Severity, ML_HUNK from credsweeper.credentials.candidate import Candidate from credsweeper.credentials.line_data import LineData from credsweeper.ml_model.ml_validator import MlValidator from credsweeper.utils.util import Util class CustomLineData(LineData): """Object that allows to create LineData from scanner results""" def __init__( self, # line: str, # value: str, # line_num: int, # path: str, # variable: str, # value_start: int, # value_end: int, # variable_start: int, # variable_end: int, # ) -> None: self.line: str = line self.line_num: int = line_num self.path: str = path self.value = value self.file_type = Util.get_extension(path) self.variable = variable self.value_start = value_start self.value_end = value_end if value_start < value_end else value_start + len(value) self.variable_start = variable_start self.variable_end = variable_end def get_candidates(line_data: dict): """Get list of candidates. 1 candidate for each rule that detected this line""" ld = CustomLineData(line=line_data["line"], value=line_data["value"], line_num=line_data["line_num"], path=line_data["path"], variable=line_data["variable"], value_start=line_data["value_start"], value_end=line_data["value_end"], variable_start=line_data["variable_start"], variable_end=line_data["variable_end"]) candidates = [] for rule in line_data["RuleName"]: candidates.append( Candidate( line_data_list=[ld], patterns=[], rule_name=rule, severity=Severity.MEDIUM, use_ml=True, )) return candidates def get_features(line_data: Union[dict, pd.Series], ml_validator: MlValidator) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """Get features from a single detection using CredSweeper.MlValidator module""" candidates = get_candidates(line_data) line_input = ml_validator.encode_line(line_data["line"], line_data["value_start"]) if variable := line_data["variable"]: if len(variable) > ML_HUNK: variable = variable[:ML_HUNK] variable_input = ml_validator.encode_value(variable) else: variable_input = ml_validator.encode_value('') if value := line_data["value"]: if len(value) > ML_HUNK: value = value[:ML_HUNK] value_input = ml_validator.encode_value(value) else: raise RuntimeError(f"Empty value is not allowed {line_data}") line = line_data["line"] assert line[line_data["value_start"]:].startswith(line_data["value"]), line_data extracted_features = ml_validator.extract_features(candidates) return line_input, variable_input, value_input, extracted_features def prepare_data(df: pd.DataFrame) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """Get features from a DataFrame detection using CredSweeper.MlValidator module""" ml_validator = MlValidator(0.5) # MLValidator object loads config (MAY be updated!) with features x_size = len(df) x_line_input = np.zeros(shape=[x_size, MlValidator.MAX_LEN, ml_validator.num_classes], dtype=np.float32) x_variable_input = np.zeros(shape=[x_size, ML_HUNK, ml_validator.num_classes], dtype=np.float32) x_value_input = np.zeros(shape=[x_size, ML_HUNK, ml_validator.num_classes], dtype=np.float32) # features size preprocess to calculate the dimension automatically features = get_features( # line_data={ # "path": "", # "line_num": 1, # "line": "const API=123;", # "value": "123", # "value_start": 10, # "value_end": 13, # "variable": "API", # "variable_start": 6, # "variable_end": 9, # "RuleName": ["API"], # }, # ml_validator=ml_validator) features_size = features[3].shape[1] print(f"Features size: {features_size}", flush=True) x_features = np.zeros(shape=[x_size, features_size], dtype=np.float32) n = 0 for i, row in df.iterrows(): assert bool(row["line"]) and bool(row["value"]), row line_input, variable_input, value_input, extracted_features = get_features(row, ml_validator) x_line_input[n] = line_input x_variable_input[n] = variable_input x_value_input[n] = value_input x_features[n] = extracted_features n += 1 return x_line_input, x_variable_input, x_value_input, x_features ================================================ FILE: experiment/hyperparameters.py ================================================ HP_DICT = { "line_lstm_dropout_rate": ((0.4, 0.5, 0.01), 0.47), "variable_lstm_dropout_rate": ((0.4, 0.5, 0.01), 0.42), "value_lstm_dropout_rate": ((0.4, 0.5, 0.01), 0.47), "dense_a_drop": ((0.0, 0.3, 0.01), 0.21), "dense_b_drop": ((0.0, 0.3, 0.01), 0.23), } ================================================ FILE: experiment/log_callback.py ================================================ import datetime import psutil from keras.src.callbacks import Callback class LogCallback(Callback): def __init__(self): super().__init__() @staticmethod def get_memory_info(): process = psutil.Process() memory_info = process.memory_info() return str(memory_info) def on_epoch_end(self, epoch, logs=None): print(str(datetime.datetime.now()), flush=True) print(f"{epoch + 1}:{self.get_memory_info()}", flush=True) print(logs, flush=True) ================================================ FILE: experiment/main.py ================================================ import os import random import sys from argparse import ArgumentParser, BooleanOptionalAction from train import train def main(argv) -> int: parser = ArgumentParser() parser.add_argument("-d", "--data", nargs="?", help="CredData location", dest="cred_data_location", metavar="PATH", required=True) parser.add_argument("-j", "--jobs", help="number of parallel processes to use (default: 4)", default=4, dest="jobs", metavar="POSITIVE_INT") parser.add_argument("-e", "--epochs", help="maximal epochs to train (default: 100)", default=100, dest="epochs", metavar="POSITIVE_INT") parser.add_argument("-b", "--batch_size", help="batch size (default: 256)", default=256, dest="batch_size", metavar="POSITIVE_INT") parser.add_argument("-p", "--patience", help="early stopping patience (default: 5)", default=5, dest="patience", metavar="POSITIVE_INT") parser.add_argument("--doc", help="use doc target", dest="doc_target", action=BooleanOptionalAction, default=False) parser.add_argument("--tuner", help="use keras tuner", dest="use_tuner", action=BooleanOptionalAction, default=False) parser.add_argument("--eval-test", help="evaluate model for test dataset", dest="eval_test", action=BooleanOptionalAction, default=False) parser.add_argument("--eval-train", help="evaluate model for train dataset", dest="eval_train", action=BooleanOptionalAction, default=False) parser.add_argument("--eval-full", help="evaluate model for full dataset after train", dest="eval_full", action=BooleanOptionalAction, default=False) args = parser.parse_args(argv[1:]) fixed_seed = 20251216 print(f"Fixed seed:{fixed_seed}", flush=True) random.seed(fixed_seed) print(args, flush=True) # dbg _model_file_name = train( cred_data_location=args.cred_data_location, jobs=int(args.jobs), epochs=int(args.epochs), batch_size=int(args.batch_size), patience=int(args.patience), doc_target=bool(args.doc_target), use_tuner=bool(args.use_tuner), eval_test=bool(args.eval_test), eval_train=bool(args.eval_train), eval_full=bool(args.eval_full), ) if os.path.exists(_model_file_name): # print in last line the name print(f"\nYou can find your model in:\n{_model_file_name}", flush=True) return 0 print(f"Error: {_model_file_name}", flush=True) return 1 if __name__ == "__main__": sys.exit(main(sys.argv)) ================================================ FILE: experiment/main.sh ================================================ #!/usr/bin/env bash set -ex START_TIME=$(date +%s) NOW=$(date +%Y%m%d_%H%M%S) echo ">>> START ${BASH_SOURCE[0]} in $(pwd) at ${NOW}" free --wide --human # use the path environments without / at end echo "CREDSWEEPER_DIR='${CREDSWEEPER_DIR}'" if [ -z "${CREDSWEEPER_DIR}" ] || [ ! -d "${CREDSWEEPER_DIR}" ]; then echo "CREDSWEEPER_DIR environment is empty or does not exist" exit 1 fi export PYTHONPATH="${CREDSWEEPER_DIR}":$PYTHONPATH # check current version of CredSweeper "${CREDSWEEPER_DIR}"/.venv/bin/python -m credsweeper --banner git log -1 git status echo "CREDDATA_DIR='${CREDDATA_DIR}'" if [ -z "${CREDDATA_DIR}" ] || [ ! -d "${CREDDATA_DIR}" ]; then echo "CREDDATA_DIR environment is empty or does not exist" exit 1 fi # do some check in CredData repo (cd "${CREDDATA_DIR}" && git log -1 && git status) echo "JOBS=${JOBS} of $(nproc)" if [ -z "${JOBS}" ]; then JOBS=$(nproc) echo "Used JOBS=${JOBS} for multiple process" elif [ ! 0 -lt ${JOBS} ]; then echo "Unappropriated JOBS=${JOBS}" exit 1 fi echo "BATCH=${BATCH}" if [ -z "${BATCH}" ]; then BATCH=256 echo "Used BATCH=${BATCH}" elif [ ! 0 -lt ${JOBS} ]; then echo "Unappropriated BATCH=${BATCH}" exit 1 fi WORK_DIR="${CREDSWEEPER_DIR}/experiment" cd "${WORK_DIR}" RESULT_DIR="${WORK_DIR}/results" mkdir -vp "${RESULT_DIR}" # set env TUNER to use keras-tuner #TUNER=--tuner # set env DOC to apply doc dataset #DOC=--doc "${CREDSWEEPER_DIR}"/.venv/bin/python main.py --data "${CREDDATA_DIR}" --jobs ${JOBS} ${TUNER} ${DOC} --batch_size ${BATCH} | tee "${RESULT_DIR}/${NOW}.train.log" error_code=${PIPESTATUS} if [ 0 -ne ${error_code} ]; then exit ${error_code}; fi cd "${CREDSWEEPER_DIR}" report_file=${RESULT_DIR}/${NOW}.json if [ -z "${TESTDATA_DIR}" ]; then echo "Used CREDDATA_DIR=${CREDDATA_DIR} for BenchMark and train rules only" ${CREDSWEEPER_DIR}/.venv/bin/python -m credsweeper ${DOC} --sort --rules ${CREDSWEEPER_DIR}/experiment/results/train_config.yaml --path "${CREDDATA_DIR}/data" --log info --jobs ${JOBS} --subtext --save-json ${report_file} --no-stdout cd "${CREDDATA_DIR}" else echo "TESTDATA_DIR=${TESTDATA_DIR}" ${CREDSWEEPER_DIR}/.venv/bin/python -m credsweeper ${DOC} --sort --path "${TESTDATA_DIR}/data" --log info --jobs ${JOBS} --subtext --save-json ${report_file} --no-stdout cd "${TESTDATA_DIR}" fi .venv/bin/python -m benchmark --scanner credsweeper --load ${report_file} | tee ${CREDSWEEPER_DIR}/.ci/benchmark.txt SPENT_SECONDS=$(( $(date +%s) - ${START_TIME} )) if [ 86400 -lt ${SPENT_SECONDS} ];then SPENT_TIME=$(date -ud "@${SPENT_SECONDS}" +"$(( ${SPENT_SECONDS} / 86400 ))-%H:%M:%S") else SPENT_TIME=$(date -ud "@${SPENT_SECONDS}" +"%H:%M:%S") fi echo "<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}" ================================================ FILE: experiment/ml_model.py ================================================ from typing import Any, Optional import keras_tuner as kt from tensorflow.keras.layers import Dense, LSTM, Bidirectional, Input, Concatenate, Dropout from tensorflow.keras.models import Model from tensorflow.keras.optimizers import Adam from tensorflow.python.keras.layers import ReLU, Softmax, Multiply from tensorflow.python.keras.metrics import BinaryAccuracy, Precision, Recall from credsweeper.common.constants import ML_HUNK from credsweeper.ml_model.ml_validator import MlValidator class MlModel(kt.HyperModel): d_type = "float32" def __init__(self, line_shape: tuple, variable_shape: tuple, value_shape: tuple, feature_shape: tuple, **kwargs): self.line_shape = line_shape self.variable_shape = variable_shape self.value_shape = value_shape self.feature_shape = feature_shape self.__kwargs = kwargs def get_hyperparam(self, param_name: str, hp=None) -> Any: if param_name in self.__kwargs: param = self.__kwargs.get(param_name) if isinstance(param, float): print(f"'{param_name}' constant = {param}", flush=True) return param elif hp and isinstance(param, tuple) and 3 == len(param): print(f"'{param_name}' tuning = {param}", flush=True) return hp.Float(param_name, min_value=param[0], max_value=param[1], step=param[2]) else: raise ValueError(f"'{param_name}' was not inited well {param} tuner is {hp}") else: raise ValueError(f"'{param_name}' was not defined during init and tuner is used") def build(self, hp: Optional[Any]) -> Model: """Get keras model with string and feature input and single binary out""" line_lstm_dropout_rate = self.get_hyperparam("line_lstm_dropout_rate", hp) variable_lstm_dropout_rate = self.get_hyperparam("variable_lstm_dropout_rate", hp) value_lstm_dropout_rate = self.get_hyperparam("value_lstm_dropout_rate", hp) dense_a_drop = self.get_hyperparam("dense_a_drop", hp) dense_b_drop = self.get_hyperparam("dense_b_drop", hp) line_input = Input(shape=(None, self.line_shape[2]), name="line_input", dtype=self.d_type) line_lstm = LSTM(units=self.line_shape[1], dtype=self.d_type, dropout=line_lstm_dropout_rate, recurrent_dropout=0) line_bidirectional = Bidirectional(layer=line_lstm, name="line_bidirectional") line_lstm_branch = line_bidirectional(line_input) variable_input = Input(shape=(None, self.variable_shape[2]), name="variable_input", dtype=self.d_type) variable_lstm = LSTM(units=self.variable_shape[1], dtype=self.d_type, dropout=variable_lstm_dropout_rate, recurrent_dropout=0) variable_bidirectional = Bidirectional(layer=variable_lstm, name="variable_bidirectional") variable_lstm_branch = variable_bidirectional(variable_input) value_input = Input(shape=(None, self.value_shape[2]), name="value_input", dtype=self.d_type) value_lstm = LSTM(units=self.value_shape[1], dtype=self.d_type, dropout=value_lstm_dropout_rate, recurrent_dropout=0) value_bidirectional = Bidirectional(layer=value_lstm, name="value_bidirectional") value_lstm_branch = value_bidirectional(value_input) feature_input = Input(shape=(self.feature_shape[1], ), name="feature_input", dtype=self.d_type) feature_attention = Dense(self.feature_shape[1], activation=Softmax(), use_bias=False, name="feature_attention")(feature_input) x_scaled = Multiply(name="feature_multiply")([feature_input, feature_attention]) joined_features = Concatenate()([line_lstm_branch, variable_lstm_branch, value_lstm_branch, x_scaled]) # 3 bidirectional + features dense_units = 2 * MlValidator.MAX_LEN + 2 * 2 * ML_HUNK + self.feature_shape[1] # check after model compilation. Should be matched the combined size. # first hidden layer dense_a = Dense(units=dense_units, activation=ReLU(), name="a_dense", dtype=self.d_type)(joined_features) drop_a = Dropout(name="a_drop", rate=dense_a_drop)(dense_a) # second hidden layer dense_b = Dense(units=dense_units, activation=ReLU(), name="b_dense", dtype=self.d_type)(drop_a) drop_b = Dropout(name="b_drop", rate=dense_b_drop)(dense_b) dense_final = Dense(units=1, activation='sigmoid', name="prediction", dtype=self.d_type)(drop_b) metrics = [BinaryAccuracy(name="binary_accuracy"), Precision(name="precision"), Recall(name="recall")] model: Model = Model(inputs=[line_input, variable_input, value_input, feature_input], outputs=dense_final) model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=metrics) model.summary(line_length=120, expand_nested=True, show_trainable=True) return model ================================================ FILE: experiment/model_config_preprocess.py ================================================ import mimetypes from typing import Dict import pandas as pd from credsweeper.app import APP_PATH from credsweeper.utils.util import Util ML_CONFIG_PATH = APP_PATH / "ml_model" / "ml_config.json" def model_config_preprocess(df_all: pd.DataFrame, doc_target: bool) -> Dict[str, float]: model_config = Util.json_load(ML_CONFIG_PATH) ascii_char_set = ''.join(chr(x) for x in range(0x20, 0x7F)) extra_char_set = "\x1B\t\n\r" # ESC code, tab and line end variations doc_char_set = " ●가개공기께내는님당드등따로메면문밀방번보복본비사생서석성슈스시암에요용워으의이작정주지채체큰키토팅패필하할호화" if doc_target else '' model_config["char_set"] = extra_char_set + ascii_char_set + doc_char_set # check whether all extensions from meta are in ml_config.json for x in model_config["features"]: if "FileExtension" == x["type"]: config_extensions = x["kwargs"]["extensions"] config_extensions_set = set(config_extensions) if len(config_extensions) != len(config_extensions_set): print("WARNING: duplicates in config extensions list", flush=True) if any(x != x.lower() for x in config_extensions_set): print("WARNING: file extensions in config must be in lowercase", flush=True) break else: raise RuntimeError(f"FileExtension was not found in config ({ML_CONFIG_PATH}) features!") data_extension_set = set(df_all["ext"].unique()) if config_extensions_set != data_extension_set: unknown_extensions = [] for x in model_config["features"]: if "FileExtension" == x["type"]: known_extensions = set(x["kwargs"]["extensions"]) x["kwargs"]["extensions"] = [] for extension in sorted(list(data_extension_set)): if extension in known_extensions or mimetypes.guess_type(f"a_file{extension}")[0]: # use already present extensions and well-known additionally x["kwargs"]["extensions"].append(extension) else: # collect all unknown extensions for error log print(f"UNKNOWN EXTENSION: {extension}", flush=True) unknown_extensions.append(extension) Util.json_dump(model_config, ML_CONFIG_PATH) if known_extensions != set(x["kwargs"]["extensions"]): # the process must be restarted with updated config raise RuntimeError("RESTART: differences in extensions:" f"\nconfig:{config_extensions_set.difference(data_extension_set)}" f"\ndata:{data_extension_set.difference(config_extensions_set)}" f"\nFile {ML_CONFIG_PATH} was updated." f"\nUnknown extensions:{unknown_extensions if unknown_extensions else None}") break # append all rule names for the feature for x in model_config["features"]: if "RuleName" == x["type"]: config_rules = x["kwargs"]["rule_names"] config_rules_set = set(config_rules) if len(config_rules) != len(config_rules_set): print("WARNING: duplicates in config rule_names list", flush=True) break else: raise RuntimeError(f"rule_names was not found in config ({ML_CONFIG_PATH}) features!") data_rules_set = set(df_all["RuleName"].explode().unique()) if config_rules_set != data_rules_set: sorted_rules = sorted(list(data_rules_set)) print("Update config rule names with ", sorted_rules, flush=True) for x in model_config["features"]: if "RuleName" == x["type"]: x["kwargs"]["rule_names"] = sorted_rules Util.json_dump(model_config, ML_CONFIG_PATH) break # the process must be restarted with updated config raise RuntimeError(f"RESTART: differences in rules:" f"\nconfig:{config_rules_set.difference(data_rules_set)}" f"\ndata:{data_rules_set.difference(config_rules_set)}" f"\nFile {ML_CONFIG_PATH} was updated.") else: print(config_rules_set, " matches ", data_rules_set, flush=True) thresholds = model_config["thresholds"] assert isinstance(thresholds, dict), thresholds print(f"Load thresholds: {thresholds}", flush=True) return thresholds ================================================ FILE: experiment/plot.py ================================================ import itertools import math import pathlib import matplotlib.pyplot as plt from keras.src.callbacks import History from matplotlib import image as mpimg METRICS = ["loss", "binary_accuracy", "precision", "recall"] NCOLS = 2 # GRAPHS_PER_ROW NROWS = math.ceil(len(METRICS) / NCOLS) def save_plot(stamp: str, title: str, history: History, dir_path: pathlib.Path, best_epoch: int, info: str): plt.clf() fig, axes = plt.subplots(nrows=NROWS, ncols=NCOLS, figsize=(16, 9), tight_layout=True) fig.suptitle(f"{stamp} {title}") # train displays "Epoch 1/7", so let the plot starts from 1 x = [x + 1 for x in history.epoch] for idx, characteristic in itertools.zip_longest(range(NROWS * NROWS), METRICS): axes_x = idx % NCOLS axes_y = idx // NCOLS if characteristic: y_train = history.history[characteristic] y_test = history.history[f"val_{characteristic}"] axes[axes_x, axes_y].plot(x, y_train, label="train") axes[axes_x, axes_y].plot(x, y_test, label="test") axes[axes_x, axes_y].set_title(characteristic) axes[axes_x, axes_y].legend(loc="upper left") axes[axes_x, axes_y].grid(visible=True, which="both", color="grey", linewidth=0.75, linestyle="dotted") axes[axes_x, axes_y].set_xticks(range(min(x), max(x) + 1, 1), minor=True) axes[axes_x, axes_y].axvline(x=best_epoch, color='green', linestyle='--', linewidth=1) else: axes[axes_x, axes_y].axis('off') fig.text(0.001, 0.001, info, fontsize=10, color='green', backgroundcolor='white') plt.savefig(dir_path / f"{stamp}.png", dpi=96) plt.close('all') def stamp_plot(stamp: str, dir_path: pathlib.Path, info: str): file_path = dir_path / f"{stamp}.png" image = mpimg.imread(file_path) plt.figure(figsize=(16, 9), tight_layout=True) plt.imshow(image) plt.text(222, 333, info, fontsize=10, color='red', backgroundcolor='white') plt.axis('off') plt.savefig(file_path, bbox_inches='tight', pad_inches=0, dpi=96) plt.close('all') ================================================ FILE: experiment/prepare_data.py ================================================ import binascii import hashlib import os import pathlib import subprocess import sys from pathlib import Path from credsweeper.scanner.scanner import RULES_PATH from credsweeper.utils.util import Util RESULTS_DIR = pathlib.Path(__file__).parent / "results" def execute_scanner(dataset_location: str, report_file_str: str, train_rules_str: str, jobs: int, doc_target: bool): """Execute CredSweeper as a separate process to make sure no global states is shared with training script""" dir_path = os.path.dirname(os.path.realpath(__file__)) command = (f"{sys.executable} -m credsweeper" f" --jobs {jobs}" f" --path {dataset_location}/data" f" {'--doc' if doc_target else ''}" f" --save-json {report_file_str}" f" --rules {train_rules_str}" " --pedantic" " --ml_threshold 0" " --sort" " --subtext" " --log info" " --no-stdout") error_code = subprocess.check_call(command, shell=True, cwd=dir_path) if 0 != error_code: sys.exit(error_code) def data_checksum(dir_path: Path) -> str: checksum = hashlib.md5(b'').digest() for root, dirs, files in os.walk(dir_path): for file in files: with open(os.path.join(root, file), "rb") as f: cvs_checksum = hashlib.md5(f.read()).digest() checksum = bytes(a ^ b for a, b in zip(checksum, cvs_checksum)) return binascii.hexlify(checksum).decode() def prepare_train_data(cred_data_location: str, jobs: int, doc_target: bool): print("Start train data preparation...", flush=True) # use current rules rules = Util.yaml_load(RULES_PATH) target = "doc" if doc_target else "code" new_rules = [x for x in rules if x.get("use_ml") and target in x["target"]] train_rules_config_path = RESULTS_DIR / "train_config.yaml" Util.yaml_dump(new_rules, train_rules_config_path) meta_dir_checksum = data_checksum(Path(cred_data_location) / "meta") print(f"meta checksum {meta_dir_checksum}", flush=True) data_dir_checksum = data_checksum(Path(cred_data_location) / "data") print(f"data checksum {data_dir_checksum}", flush=True) detected_data_filename = RESULTS_DIR / f"detected_data.{data_dir_checksum}.json" if not os.path.exists(detected_data_filename): print(f"Get CredSweeper results from {cred_data_location}. May take some time", flush=True) execute_scanner(cred_data_location, str(detected_data_filename), str(train_rules_config_path), jobs, doc_target) else: print(f"Get cached result {data_dir_checksum}", flush=True) print("Train data prepared!", flush=True) return meta_dir_checksum, data_dir_checksum ================================================ FILE: experiment/requirements.txt ================================================ # Python 3.10.20 # pip 26.1 # version sensetive h5py==3.12.1 keras==2.15.0 keras-tuner==1.4.7 numpy==1.26.4 onnx==1.17.0 protobuf==3.20.3 scikit-learn==1.6.1 tensorflow-cpu==2.15.1 tf2onnx==1.16.1 wrapt==1.14.1 # version insensetive types-tensorflow matplotlib colorama psutil ================================================ FILE: experiment/tf2onnx/tf2onnx.sh ================================================ #!/usr/bin/env bash set -e # tensorflow model may be obtained like this: git restore -s be06d6059f0def4f0fdb50444c08db4ce542173e -- ml_model.h5 # use virtual environment and the requirements.txt - there are very specific luke combination of packages verions # python -m venv .venv # . .venv/bin/activate # python -m pip install --upgrade pip # python -m pip install --requirement requirements.txt # [optional] thransform model form h5 to saved directory python -c 'import tensorflow as tf;model=tf.keras.models.load_model("ml_model.h5");model.save("ml_model")' # transform the model python -m tf2onnx.convert --saved-model ml_model --output ml_model.onnx --verbose --rename-inputs feature_input,line_input # md5sum for integrity md5sum --binary ml_model.onnx ================================================ FILE: experiment/tools/base64_test.py ================================================ #!/usr/env python3 # -*- coding: utf-8 -*- """ The script is useful to test patterns of base64 encoded data with 0,1,2 offsets """ import base64 import random import sys def gen_token(pad: int, txt: bytes) -> bytes: trash = random.randbytes(3) + random.randbytes(pad) + txt + random.randbytes(pad) + random.randbytes(3) return base64.b64encode(trash, altchars=b"-_") def main(argv): loops = int(argv[1]) if 1 < len(argv) else 1 inner_pattern = b"XgroqX" while 0 < loops: loops -= 1 token0 = gen_token(0, inner_pattern) assert b"WGdyb3FY" in token0, token0 token1 = gen_token(1, inner_pattern) assert b"hncm9xW" in token1, token1 token2 = gen_token(2, inner_pattern) assert b"YZ3JvcV" in token2, token2 if __name__ == """__main__""": main(sys.argv) ================================================ FILE: experiment/tools/entropy_test.py ================================================ import random import signal import statistics import threading import time from multiprocessing import Pool from typing import Tuple, Dict from credsweeper.common.constants import Chars from credsweeper.utils.util import Util random_data: str ITERATIONS = 1000 def pool_initializer() -> None: signal.signal(signal.SIGINT, signal.SIG_IGN) def evaluate_avg(_args: Tuple[int, float, float]) -> Tuple[float, float]: min_avg = _args[1] max_dvt = _args[2] size = _args[0] entropies = [] for x in range(ITERATIONS): offset = x * size entropy = Util.get_shannon_entropy(random_data[offset:offset + size]) entropies.append(entropy) avg = statistics.mean(entropies) dvt = statistics.stdev(entropies, avg) if avg < min_avg: min_avg = avg if dvt > max_dvt: max_dvt = dvt return min_avg, max_dvt if __name__ == "__main__": random.seed() stats: Dict[int, Tuple[float, float]] = {} sizes = [x for x in range(8, 36)] try: for n in range(1000): start_time = time.time() random_data = ''.join([random.choice(Chars.BASE32_CHARS.value) for _ in range(ITERATIONS * max(sizes))]) _args = [(i, stats[i][0] if i in stats else 9.9, stats[i][1] if i in stats else 0.0) for i in sizes] with Pool(processes=min(15, len(_args)), initializer=pool_initializer) as pool: for _size, _res in zip(sizes, pool.map(evaluate_avg, _args)): with threading.Lock(): stats[_size] = _res for k, v in stats.items(): print(f"{k}: {v}", flush=True) print(f"loop {n} in {time.time() - start_time}", flush=True) except KeyboardInterrupt as exc: print(exc, flush=True) finally: print("===========================================================", flush=True) for k, v in stats.items(): # for parametrization of unit tests print(f"({k}, {v[0]}, {v[1]}),", flush=True) ================================================ FILE: experiment/tools/morpheme_test.py ================================================ import random import signal import threading import time from multiprocessing import Pool from typing import Tuple, Dict from credsweeper.common import KeywordChecklist from credsweeper.common.constants import BASE64COMMON random_data: str ITERATIONS = 1000 class KeywordChecklistTest(KeywordChecklist): def calc(self, line_lower: str) -> int: matches = 0 for keyword in self.morpheme_set: if keyword in line_lower: matches += 1 return matches counter = KeywordChecklistTest() def pool_initializer() -> None: signal.signal(signal.SIGINT, signal.SIG_IGN) def evaluate_avg(_args: Tuple[int, float, float]) -> Tuple[float, float]: min_avg = _args[1] max_dvt = _args[2] size = _args[0] for x in range(ITERATIONS): offset = x * size value = counter.calc(random_data[offset:offset + size]) if 0 < value < min_avg: min_avg = value if value > max_dvt: max_dvt = value return min_avg, max_dvt if __name__ == "__main__": random.seed() stats: Dict[int, Tuple[float, float]] = {} sizes = [4, 8, 16, 32, 40, 64, 70, 80, 90, 100, 128, 256, 512, 1024] try: for n in range(100): start_time = time.time() random_data = ''.join([random.choice(BASE64COMMON) for _ in range(ITERATIONS * max(sizes))]) _args = [(i, stats[i][0] if i in stats else 9.9, stats[i][1] if i in stats else 0.0) for i in sizes] with Pool(processes=min(15, len(_args)), initializer=pool_initializer) as pool: for _size, _res in zip(sizes, pool.map(evaluate_avg, _args)): with threading.Lock(): stats[_size] = _res for k, v in stats.items(): print(f"{k}: {v}", flush=True) print(f"loop {n} in {time.time() - start_time}", flush=True) except KeyboardInterrupt as exc: print(exc, flush=True) finally: print("===========================================================", flush=True) for k, v in stats.items(): # for parametrization of unit tests print(f"({k}, {v[0]}, {v[1]}),", flush=True) ================================================ FILE: experiment/tools/strength_test.py ================================================ import random import signal import statistics import threading import time from multiprocessing import Pool from typing import Tuple, Dict from credsweeper.common.constants import Chars from credsweeper.utils.hop_stat import HopStat hopper = HopStat() ITERATIONS = 10000000 BASE = Chars.BASE36_CHARS.value def pool_initializer() -> None: signal.signal(signal.SIGINT, signal.SIG_IGN) def evaluate_avg(size) -> Tuple[Tuple[float, float], Tuple[float, float]]: hops = [] devs = [] for i in range(ITERATIONS): hop, dev = hopper.stat(''.join(random.choices(BASE, k=size))) hops.append(hop) devs.append(dev) avg_hop = statistics.mean(hops) dev_hop = statistics.stdev(hops, avg_hop) avg_dev = statistics.mean(devs) dev_dev = statistics.stdev(devs, avg_dev) return (avg_hop, dev_hop), (avg_dev, dev_dev) if __name__ == "__main__": try: stats: Dict[int, Tuple[float, float]] = {} sizes = [8, 10, 15, 16, 20, 24, 25, 32, 40, 50, 64] start_time = time.time() with Pool(processes=min(16, len(sizes)), initializer=pool_initializer) as pool: for _size, _res in zip(sizes, pool.map(evaluate_avg, sizes)): with threading.Lock(): stats[_size] = _res print(f"done in {time.time() - start_time} for {BASE}", flush=True) for k, v in stats.items(): print(f"{k}: {v},", flush=True) except KeyboardInterrupt as exc: print(exc, flush=True) # base32 results # 8: ((3.480934, 0.8482364556537906), (1.9280820731422028, 0.5833143826506801)), # 10: ((3.4801753333333334, 0.7508676237320747), (1.9558544090983234, 0.5119385414964345)), # 15: ((3.4803549285714284, 0.603220270918794), (1.9896690734372564, 0.40640877687972476)), # 16: ((3.4798649333333334, 0.5837818960141307), (1.9938368543943692, 0.392547066949958)), # 20: ((3.4809878947368422, 0.518785674729997), (2.0058661928593517, 0.34692788889724946)), # 24: ((3.480511086956522, 0.4726670109337228), (2.0131379532992537, 0.31476354168931936)), # 25: ((3.480877375, 0.4626150412368404), (2.0147828593929953, 0.3075894753390553)), # 32: ((3.4809023548387095, 0.4072672632996217), (2.0231609118646867, 0.2700344059876962)), # 40: ((3.4801929743589746, 0.36361457820793436), (2.027858606807074, 0.2401498396303172)), # 50: ((3.4798551224489795, 0.323708167297437), (2.0318808048208794, 0.2138098551294688)), # 64: ((3.4805990476190476, 0.28572156450556774), (2.035756800745673, 0.18815721535870078)), # base36 result # 8: ((3.7190542428571427, 0.8995506118495411), (2.066095086865182, 0.609210293352161)), # 10: ((3.719109611111111, 0.7956463384852813), (2.0946299036665494, 0.5322004874842623)), # 15: ((3.719274257142857, 0.6401989313894239), (2.129437216268589, 0.42108786288993155)), # 16: ((3.7192072666666665, 0.6188627491757901), (2.1336109506109366, 0.4064699817331141)), # 20: ((3.719249815789474, 0.5506473627709657), (2.145293932511567, 0.3591543917048417)), # 24: ((3.7191934304347827, 0.50051922802262), (2.152858549996053, 0.3252064160191062)), # 25: ((3.7192351583333334, 0.4904181410613897), (2.1543202565038735, 0.31823801389315026)), # 32: ((3.7190408419354837, 0.4315967526660196), (2.1620321219700767, 0.2788634701820312)), # 40: ((3.7191682666666668, 0.3852248727988986), (2.16746680811131, 0.24802261318501675)), # 50: ((3.718913744897959, 0.3436564880405547), (2.1715676118603806, 0.22070510537297627)), # 64: ((3.7190009761904763, 0.30325954360127116), (2.1751172797904093, 0.1942582237461476)), # base64 results # done in 130.86447429656982 for 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_ # 8: ((3.7627115714285715, 0.9413431166706269), (2.1378378843992736, 0.6394596814295781)), # 10: ((3.7617393333333333, 0.8327986018456262), (2.168873183866972, 0.5605393324056347)), # 15: ((3.7619624285714286, 0.6698092646328063), (2.2080058406286702, 0.4447698491992352)), # 16: ((3.7618573333333334, 0.6471500119793832), (2.2116826642934453, 0.4288377928263507)), # 20: ((3.7618887368421055, 0.575813792926031), (2.224384985667721, 0.37985781543221253)), # 24: ((3.7621449565217393, 0.5243297908608613), (2.2326041329976607, 0.34397389723600613)), # 25: ((3.762616791666667, 0.5137934920050976), (2.234571917211925, 0.3366547036535176)), # 32: ((3.761885838709677, 0.4521158322065318), (2.2426375800006153, 0.29506039075960255)), # 40: ((3.7622649487179487, 0.4031261511824518), (2.2485911621253574, 0.2622954601051068)), # 50: ((3.762087693877551, 0.3597404118023357), (2.2533774423872956, 0.23384524947332655)), # 64: ((3.7625271746031745, 0.31733579704946846), (2.257532519514275, 0.20571908142867643)), ================================================ FILE: experiment/train.py ================================================ import hashlib import os import pathlib import pickle import random import subprocess import sys from datetime import datetime import keras_tuner as kt import numpy as np import pandas as pd import tensorflow as tf from keras import Model # type: ignore from numpy import ndarray from sklearn.model_selection import train_test_split from sklearn.utils import compute_class_weight from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint from data_loader import read_detected_data, read_metadata, join_label, get_y_labels from experiment.evaluate_model import evaluate_model from features import prepare_data from hyperparameters import HP_DICT from log_callback import LogCallback from ml_model import MlModel from model_config_preprocess import model_config_preprocess, ML_CONFIG_PATH from plot import save_plot from prepare_data import prepare_train_data, RESULTS_DIR def train( cred_data_location: str, jobs: int, epochs: int, batch_size: int, patience: int, doc_target: bool, use_tuner: bool, eval_test: bool, eval_train: bool, eval_full: bool, ) -> str: # fixed seed for std.random in main() tf.random.set_seed(random.randint(1, 0xffffffff)) np.random.seed(random.randint(1, 0xffffffff)) print(f"Memory at start: {LogCallback.get_memory_info()}", flush=True) subprocess.check_call(f"md5sum {ML_CONFIG_PATH.absolute()}", shell=True) # dbg current_time = datetime.now().strftime("%Y%m%d_%H%M%S") os.makedirs(RESULTS_DIR, exist_ok=True) print(f"Train model on data from {cred_data_location}", flush=True) meta_checksum, data_checksum = prepare_train_data(cred_data_location, jobs, doc_target) df_all_file = RESULTS_DIR / f"{meta_checksum}-{data_checksum}.pkl" if df_all_file.exists(): df_all = pd.read_pickle(df_all_file) print(f"Read from {df_all_file}", flush=True) else: # detected data means which data is passed to ML validator of credsweeper after filters with RuleName detected_data = read_detected_data(RESULTS_DIR / f"detected_data.{data_checksum}.json") print(f"CredSweeper detected {len(detected_data)} credentials without ML", flush=True) # all markup data meta_data = read_metadata(f"{cred_data_location}/meta") print(f"Metadata markup: {len(meta_data)} items", flush=True) df_all = join_label(detected_data, meta_data, cred_data_location) # np.save(df_all_file, df_all) df_all.to_pickle(df_all_file) print(f"Stored to {df_all_file}", flush=True) # to prevent extra memory consumption - delete unnecessary objects del detected_data del meta_data # workaround for CI step trial_cnt = 3 while 0 < trial_cnt: trial_cnt -= 1 # there are 2 times possible fails due ml config might be updated try: thresholds = model_config_preprocess(df_all, doc_target) break except RuntimeError as exc: if "RESTART:" in str(exc) and 0 <= trial_cnt: print(str(exc), flush=True) continue else: raise exc else: raise RuntimeError("Something went wrong") # random split df_train, df_test = train_test_split(df_all, test_size=0.15, random_state=random.randint(1, 1 << 32)) len_df_train = len(df_train) print(f"Train size: {len_df_train}", flush=True) len_df_test = len(df_test) print(f"Test size: {len_df_test}", flush=True) print(f"Prepare full data", flush=True) x_full_line, x_full_variable, x_full_value, x_full_features = prepare_data(df_all) y_full: ndarray = get_y_labels(df_all) del df_all print(f"Prepare train data", flush=True) x_train_line, x_train_variable, x_train_value, x_train_features = prepare_data(df_train) print("x_train_value dtype ", x_train_value.dtype, flush=True) # dbg print("x_train_features dtype", x_train_features.dtype, flush=True) # dbg y_train = get_y_labels(df_train) print("y_train dtype", y_train.dtype, flush=True) # dbg del df_train print(f"Class-1 prop on train: {np.mean(y_train):.4f}", flush=True) classes = np.unique(y_train) class_weights = compute_class_weight(class_weight='balanced', classes=classes, y=y_train) max_weight = max(class_weights) class_weights = [weight / max_weight for weight in class_weights] print(f"y_train size:{len(y_train)}, 0: {np.count_nonzero(y_train == 0)}, 1: {np.count_nonzero(y_train == 1)}", flush=True) class_weight = dict(zip(classes, class_weights)) print(f"class_weight: {class_weight}", flush=True) # information about class weights print(f"Prepare test data", flush=True) x_test_line, x_test_variable, x_test_value, x_test_features = prepare_data(df_test) y_test = get_y_labels(df_test) print(f"Class-1 prop on test: {np.mean(y_test):.4f}", flush=True) del df_test print(f"Memory before search / compile: {LogCallback.get_memory_info()}", flush=True) log_callback = LogCallback() if use_tuner: print(f"Tuner initial dict:{HP_DICT}", flush=True) tuner_kwargs = {k: v[0] for k, v in HP_DICT.items()} print(f"Tuner kwargs:{tuner_kwargs}", flush=True) tuner = kt.BayesianOptimization( hypermodel=MlModel(x_full_line.shape, x_full_variable.shape, x_full_value.shape, x_full_features.shape, **tuner_kwargs), objective='val_loss', directory=str(RESULTS_DIR / f"{current_time}.tuner"), project_name='ml_tuning', seed=random.randint(1, 0xffffffff), max_trials=30, ) search_early_stopping = EarlyStopping(monitor="val_loss", patience=patience, mode="min", restore_best_weights=True, verbose=1) tuner.search( x=[x_train_line, x_train_variable, x_train_value, x_train_features], y=y_train, epochs=epochs, batch_size=batch_size, callbacks=[search_early_stopping, log_callback], validation_data=([x_test_line, x_test_variable, x_test_value, x_test_features], y_test), verbose=2, ) print("Best Hyperparameters:", flush=True) for k, v in tuner.get_best_hyperparameters()[0].values.items(): print(f"{k}: {v}", flush=True) param_kwargs = {k: float(v) for k, v in tuner.get_best_hyperparameters()[0].values.items() if k in HP_DICT} del tuner else: print(f"Model is trained with params from dict:{HP_DICT}", flush=True) param_kwargs = {k: v[1] for k, v in HP_DICT.items()} print(f"Model hyper parameters: {param_kwargs}", flush=True) # repeat train step to obtain actual history chart _model = MlModel(x_full_line.shape, x_full_variable.shape, x_full_value.shape, x_full_features.shape, **param_kwargs) keras_model = _model.build(hp=None) # this train will be used hyperparam in param_kwargs if not eval_full: # the data are not necessary del x_full_line del x_full_variable del x_full_value del x_full_features del y_full early_stopping = EarlyStopping(monitor="val_loss", patience=patience, mode="min", restore_best_weights=True, verbose=1) model_checkpoint = ModelCheckpoint(filepath=str(RESULTS_DIR / f"{current_time}.best_model"), monitor="val_loss", save_best_only=True, mode="min", verbose=1) print(f"Memory before train: {LogCallback.get_memory_info()}", flush=True) fit_history = keras_model.fit(x=[x_train_line, x_train_variable, x_train_value, x_train_features], y=y_train, batch_size=batch_size, epochs=epochs, verbose=2, validation_data=([x_test_line, x_test_variable, x_test_value, x_test_features], y_test), class_weight=class_weight, callbacks=[early_stopping, model_checkpoint, log_callback], use_multiprocessing=True) # if best_val_loss is not None and best_val_loss + 0.00001 < early_stopping.best: # print(f"CHECK BEST TUNER EARLY STOP : {best_val_loss} vs CURRENT: {early_stopping.best}",flush=True) print(f"Memory after train: {LogCallback.get_memory_info()}", flush=True) with open(RESULTS_DIR / f"{current_time}.history.pickle", "wb") as f: pickle.dump(fit_history, f) model_file_name = RESULTS_DIR / f"ml_model_at-{current_time}" keras_model.save(model_file_name, include_optimizer=False) if eval_test: print(f"Validate results on the test subset. Size: {len(y_test)} {np.mean(y_test):.4f}", flush=True) evaluate_model(thresholds, keras_model, [x_test_line, x_test_variable, x_test_value, x_test_features], y_test) # drop small test set first to free a bit more memory for next evaluation del x_test_line del x_test_variable del x_test_value del x_test_features del y_test if eval_train: print(f"Validate results on the train subset. Size: {len(y_train)} {np.mean(y_train):.4f}", flush=True) evaluate_model(thresholds, keras_model, [x_train_line, x_train_variable, x_train_value, x_train_features], y_train) del x_train_line del x_train_variable del x_train_value del x_train_features del y_train if eval_full: print(f"Validate results on the full set. Size: {len(y_full)} {np.mean(y_full):.4f}", flush=True) evaluate_model(thresholds, keras_model, [x_full_line, x_full_variable, x_full_value, x_full_features], y_full) del x_full_line del x_full_variable del x_full_value del x_full_features del y_full onnx_model_file = pathlib.Path(__file__).parent.parent / "credsweeper" / "ml_model" / "ml_model.onnx" # convert the model to onnx right now convert_args = f"{sys.executable} -m tf2onnx.convert --saved-model {model_file_name.absolute()}" \ f" --output {str(onnx_model_file)} --verbose" subprocess.check_call(convert_args, shell=True, cwd=pathlib.Path(__file__).parent) with open(onnx_model_file, "rb") as f: onnx_md5 = hashlib.md5(f.read()).hexdigest() print(f"ml_model.onnx:{onnx_md5}", flush=True) with open(ML_CONFIG_PATH, "rb") as f: config_md5 = hashlib.md5(f.read()).hexdigest() print(f"ml_config.json:{config_md5}", flush=True) best_epoch = 1 + np.argmin(np.array(fit_history.history['val_loss'])) # ml history analysis save_plot( stamp=current_time, title=f"batch:{batch_size} train:{len_df_train} test:{len_df_test} weights:{class_weights}", history=fit_history, dir_path=RESULTS_DIR, best_epoch=int(best_epoch), info=f"ml_config.json:{config_md5} ml_model.onnx:{onnx_md5} best_epoch:{best_epoch}", ) return str(model_file_name.absolute()) ================================================ FILE: fuzz/README.md ================================================ # Fuzzing of CredSweeper API The directory is used for dynamic analysis of CredSweeper with using [atheris](https://github.com/google/atheris), based on [LibFuzzer](https://llvm.org/docs/LibFuzzer.html#options) ## Preparation - The same interpreter packages as for CredSweeper + atheris + coverage (optional). Working dir is project root - to be sure current source of credsweeper is used for coverage. Preferred to use virtual environment. ```bash python3.8 -m virtualenv --copies .venv . .venv/bin/activate pip install -U pip pip install -r requirements.txt ``` ## Fuzzing Launch fuzzing script to collect seed files. ```bash fuzzing.sh ``` -atheris_runs - must be greater than corpus files in 'corpus' directory. Many interactions require more rss memory - the limit must be decided. Then after productive fuzzing there will be new corpus files. Some of them are reduced from others. Some - new for imported libs. The launch does not require coverage module but requires instumentation. ## Coverage Launch fuzzing script to calculate coverage with provided corpus files. ```bash coveraging.sh ``` To generate HTML report use ```coverage html``` in project root (where .coverage file exists) after fuzzing. Instrumentation does not required - so it can be skipped. ## Reducing Launch reducing script to reduce corpus files only for 'NEW'. ```bash reducing.sh ``` The script is used -merge function of libfuzzer to reduce corpus files with multiple interaction. Full instrumentation is preferred. ## Minimizing Launch the script to remove corpus files that do not impact on credsweeper. ```bash minimizing.sh ``` The script uses coverage package to determine which corpus files do not change overall coverage and removes them. The process is slow due each corpus file has to be checked. Instrumentation is not necessary. NOTE: some seeds may be dropped due complicated expression is assumed like one line/branch. e.g.:```if 0x01 == a[0] and 0x02 == a[1]:``` then seed [0x01,0x02] is kept, but [0x01,0x00] will be removed. ## Useful commands for seed files modification ```base for f in $(ls); do h=$(sha1sum $f|cut -c-40); mv -v $f $h; done ``` Rename seed file according sha1 digest of content ================================================ FILE: fuzz/__main__.py ================================================ #!/usr/bin/env python # Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import hashlib import io import logging import os import sys import warnings from unittest.mock import patch import atheris # # # In simple case interested lib(s) may be imported during 'with' # # # It runs quickly but not precisely # with atheris.instrument_imports(enable_loader_override=False): from bs4 import XMLParsedAsHTMLWarning from credsweeper.app import CredSweeper from credsweeper.common.constants import DiffRowType from credsweeper.file_handler.files_provider import FilesProvider from credsweeper.file_handler.patches_provider import PatchesProvider from tests import ZERO_ML_THRESHOLD warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning) # set log level for fuzzing logging.basicConfig(level=logging.CRITICAL) logger = logging.getLogger(__name__) # Use depth=3 to deep scan in .zip and .gz files + find by extension feature cred_sweeper = CredSweeper(find_by_ext=True, ml_threshold=ZERO_ML_THRESHOLD, color=True, hashed=True, subtext=True, sort_output=True, thrifty=True) INPUT_DATA_SIZE = 0x1000 def fuzz_credsweeper_scan(data: bytes): # seed file name is sha1 of the content file_name = hashlib.sha1(data).hexdigest() fdp = atheris.FuzzedDataProvider(data) # offset:0x0000 to_scan = fdp.ConsumeBytes(INPUT_DATA_SIZE) logger.debug("%s >>>>>>>> %s", file_name, to_scan.decode(encoding='ascii', errors="ignore")) candidates = [] cred_sweeper.config.doc = False cred_sweeper.config.depth = 3 cred_sweeper.credential_manager.candidates.clear() patch_provider_add = PatchesProvider([io.BytesIO(to_scan)], change_type=DiffRowType.ADDED) with patch.object(CredSweeper, CredSweeper.export_results.__name__): cred_sweeper.run(patch_provider_add) candidates.extend(cred_sweeper.credential_manager.get_credentials()) cred_sweeper.config.doc = False cred_sweeper.config.depth = 0 cred_sweeper.credential_manager.candidates.clear() patch_provider_del = PatchesProvider([io.BytesIO(to_scan)], change_type=DiffRowType.DELETED) with patch.object(CredSweeper, CredSweeper.export_results.__name__): cred_sweeper.run(patch_provider_del) candidates.extend(cred_sweeper.credential_manager.get_credentials()) cred_sweeper.config.doc = True cred_sweeper.config.depth = 3 cred_sweeper.credential_manager.candidates.clear() text_provider = FilesProvider(["dummy", io.BytesIO(to_scan)]) with patch.object(CredSweeper, CredSweeper.export_results.__name__): cred_sweeper.run(text_provider) candidates.extend(cred_sweeper.credential_manager.get_credentials()) cred_sweeper.config.doc = False cred_sweeper.config.depth = 0 cred_sweeper.credential_manager.candidates.clear() text_provider = FilesProvider(["dummy.xml", io.BytesIO(to_scan)]) with patch.object(CredSweeper, CredSweeper.export_results.__name__): cred_sweeper.run(text_provider) candidates.extend(cred_sweeper.credential_manager.get_credentials()) for candidate in candidates: candidate.to_dict_list(False, False) def main(): # # # Instrument all works with ~30K functions. It is slow, but necessary for fuzzing for new seeds and reducing. # # # Instrumentation may being skipped when checking coverage with existing seeds or seeds minimization. if os.getenv('DO_ATHERIS_INSTRUMENT'): atheris.instrument_all() atheris.Setup( # sys.argv + [f"-max_len={INPUT_DATA_SIZE}"], # -rss_limit_mb=6912 fuzz_credsweeper_scan, # internal_libfuzzer=True, # enable_python_coverage=True) atheris.Fuzz() if __name__ == "__main__": main() ================================================ FILE: fuzz/auxilary.py ================================================ import binascii import random import string import sys OLD_SEED_SIZE = 2048 NEW_SEED_SIZE = 4096 - 256 # run in fuzz: for f in $(find corpus -type f); do python3 auxilary.py $f; done def main(argv): ascii_chars = string.digits + string.ascii_letters + string.punctuation + ' ' responses = [ b'{"status":"PASS"}', b'{"status":"REQUEST_DENIED","error_message":"The provided API key is invalid."}', b'{"status":"REQUEST_DENIED","error_message":"This API project is not authorized to use this API."}', b'{"ok":1}', b'{"error":1}', b'{"error":"invalid_auth"}', b'You are being redirected', b'Unable to find client by that `client_id`', b'{"error":{"message":null}}', b'{"error":{"message":""}}', b"""{"error":{"message":"The provided key 'rk_xxxHaving the 'rak_charge_read'""" b""" permission would allow this request to continue."}}""", ] for i in argv[1:]: with open(i, "rb") as f: data = f.read() for n, x in enumerate(responses): data_size = OLD_SEED_SIZE if OLD_SEED_SIZE < len(data) else len(data) with open(f"{i}.{n}", "wb") as f: f.write(data[:data_size]) f.write(b'\n' * (NEW_SEED_SIZE - data_size)) f.write(x) crc32 = binascii.crc32(data) random.seed(crc32) text = ''.join(random.choice(ascii_chars) for _ in range(NEW_SEED_SIZE)) with open(f"{i}.{crc32:08x}", "w") as f: f.write(text) if __name__ == "__main__": main(sys.argv) ================================================ FILE: fuzz/coveraging.sh ================================================ #!/usr/bin/env bash #set -x set -e START_TIME=$(date +%s) echo ">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)" THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null 2>&1 && pwd )" cd "${THISDIR}/.." cp -vf fuzz/__main__.py .coveraging.py CORPUS_DIR=fuzz/corpus rm -vf .coverage python -m coverage run \ --source=credsweeper \ .coveraging.py \ -rss_limit_mb=4096 \ -atheris_runs=$(( 1 + $(ls ${CORPUS_DIR} | wc -l) )) \ -verbosity=1 \ ${CORPUS_DIR} \ ; # make html report python -m coverage html # remove uniq data to compare reports (cd htmlcov && for f in $(ls . | grep '.*\.html'); do sed -i "s/.*created at.*//g" $f; done) # report in text format python -m coverage report | tee report.txt SPENT_TIME=$(date -ud "@$(( $(date +%s) - ${START_TIME} ))" +"%H:%M:%S") echo "<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}" ================================================ FILE: fuzz/fuzzing.sh ================================================ #!/usr/bin/env bash #set -x set -e START_TIME=$(date +%s) echo ">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)" THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null 2>&1 && pwd )" cd "${THISDIR}/.." cp -vf fuzz/__main__.py .fuzzing.py CORPUS_DIR=fuzz/corpus # DO instrument to find new seeds export DO_ATHERIS_INSTRUMENT=1 # fuzzing with single thread only python .fuzzing.py \ -rss_limit_mb=6500 \ -atheris_runs=$(( 100000 + $(ls -1 ${CORPUS_DIR} | wc -l) )) \ -verbosity=1 \ ${CORPUS_DIR} \ ; # Multijob works with -runs, ignoring -atheris_runs !!! SPENT_TIME=$(date -ud "@$(( $(date +%s) - ${START_TIME} ))" +"%H:%M:%S") echo "<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}" ================================================ FILE: fuzz/minimizing.sh ================================================ #!/usr/bin/env bash #set -x set -e START_TIME=$(date +%s) echo ">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)" THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null 2>&1 && pwd )" cd "${THISDIR}/.." cp -vf fuzz/__main__.py .minimizing.py CORPUS_DIR=fuzz/corpus MINIMIZING_DIR=fuzz/.corpus.minimizing rm -vfr ${MINIMIZING_DIR} mkdir -vp ${MINIMIZING_DIR} # ## freeze original coverage rm -fr ${MINIMIZING_DIR}/htmlcov rm -vf .coverage python -m coverage run \ --source=credsweeper \ .minimizing.py \ -rss_limit_mb=2048 \ -atheris_runs=$(( 1 + $(ls ${CORPUS_DIR} | wc -l) )) \ -verbosity=1 \ ${CORPUS_DIR}/ \ ; python -m coverage report >${MINIMIZING_DIR}/report.txt original_cov="$(tail -1 ${MINIMIZING_DIR}/report.txt)" if [ -n "${PRODUCE_HTML}" ]; then python -m coverage html mv htmlcov ${MINIMIZING_DIR} fi # ## run minimization for all corpuses declare -a CORPUS i=0 for f in $(ls -S ${CORPUS_DIR}); do CORPUS[$i]+=$f i=$(( 1 + $i )) done for f in ${CORPUS[@]}; do echo "test $f" mv -vf ${CORPUS_DIR}/$f ${MINIMIZING_DIR}/ python -m coverage run \ --source=credsweeper \ .minimizing.py \ -rss_limit_mb=2048 \ -atheris_runs=$(( 1 + $(ls ${CORPUS_DIR} | wc -l) )) \ -verbosity=1 \ ${CORPUS_DIR}/ \ ; if [ -n "${PRODUCE_HTML}" ]; then python -m coverage html mv htmlcov ${MINIMIZING_DIR}/$f.htmlcov fi python -m coverage report >${MINIMIZING_DIR}/$f.txt test_cov="$(tail -1 ${MINIMIZING_DIR}/$f.txt)" if [ "$test_cov" != "$original_cov" ]; then echo "seed file $f impacts on coverage" cp -vf ${MINIMIZING_DIR}/$f ${CORPUS_DIR}/ else echo "seed file $f does not impact on coverage" fi done SPENT_TIME=$(date -ud "@$(( $(date +%s) - ${START_TIME} ))" +"%H:%M:%S") echo "<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}" ================================================ FILE: fuzz/re-fuzzing.sh ================================================ #!/usr/bin/env bash set -x set -e START_TIME=$(date +%s) echo ">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)" THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null 2>&1 && pwd )" PARENTDIR="$(dirname ${THISDIR})" CORPUS_DIR=fuzz/corpus # copy all current samples as additional seeds find $PARENTDIR/tests/samples/* -type f -print0 | while IFS= read -r -d '' f; do s=$(sha1sum $f | cut -c-40) cp -vf $f $PARENTDIR/$CORPUS_DIR/$s # produce an archive without file names rm -vf $PARENTDIR/$CORPUS_DIR/$s.gz gzip -k $PARENTDIR/$CORPUS_DIR/$s mv -vf $PARENTDIR/$CORPUS_DIR/$s.gz $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.gz | cut -c-40) rm -vf $PARENTDIR/$CORPUS_DIR/$s.bz2 bzip2 -k $PARENTDIR/$CORPUS_DIR/$s mv -vf $PARENTDIR/$CORPUS_DIR/$s.bz2 $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.bz2 | cut -c-40) rm -vf $PARENTDIR/$CORPUS_DIR/$s.xz xz -z -k $PARENTDIR/$CORPUS_DIR/$s mv -vf $PARENTDIR/$CORPUS_DIR/$s.xz $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.xz | cut -c-40) rm -vf $PARENTDIR/$CORPUS_DIR/$s.lzma lzma -z -k $PARENTDIR/$CORPUS_DIR/$s mv -vf $PARENTDIR/$CORPUS_DIR/$s.lzma $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.lzma | cut -c-40) # produce zip archive with simple file names rm -vf $PARENTDIR/$CORPUS_DIR/$s.zip zip -j -9 -D $PARENTDIR/$CORPUS_DIR/$s.zip $f mv -vf $PARENTDIR/$CORPUS_DIR/$s.zip $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.zip | cut -c-40) # transform name rm -vf $PARENTDIR/$CORPUS_DIR/$s.tar tar --transform='s|.*'$(basename $f)'|'$(basename $f)'|' -cf $PARENTDIR/$CORPUS_DIR/$s.tar $f mv -vf $PARENTDIR/$CORPUS_DIR/$s.tar $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.tar | cut -c-40) done # DO instrument to find new seeds with multiple jobs - effective for small set of initial seeds (corpus) export DO_ATHERIS_INSTRUMENT=1 # copy the script to apply multijob fuzzing cp -vf ${THISDIR}/__main__.py ${PARENTDIR}/.fuzzing.py cd ${PARENTDIR} # workers would be equal jobs obviously or it takes unpredictable time if [ 4 -le $(nproc) ]; then PROCESSES_NUMBER=$(( $(nproc) / 4 )) else PROCESSES_NUMBER=1 fi ./.fuzzing.py \ -rss_limit_mb=6500 \ -runs=$(( 10000 + $(ls -1 ${CORPUS_DIR} | wc -l) )) \ -verbosity=1 \ -jobs=${PROCESSES_NUMBER} \ -workers=${PROCESSES_NUMBER} \ ${CORPUS_DIR} \ ; # clean-up rm -vf ${PARENTDIR}/.fuzzing.py # skip to avoid instrumentation during minimization unset DO_ATHERIS_INSTRUMENT # do reducing in single step cd ${THISDIR} (./reducing.sh) # minimization with splitting by first letter of seeds files - 8 jobs declare -A JOBS for n in $(seq 0 15); do x=$(( 15 - ${n} )) j=$(printf "%01x" ${x}) t=$(printf "%01x" $(( (${x} / 2) * 2 ))) TARGETDIR=${THISDIR}/${t} mkdir -vp ${TARGETDIR}/fuzz/corpus cp -r ${PARENTDIR}/credsweeper ${TARGETDIR}/ cp -v ${PARENTDIR}/.coveragerc ${TARGETDIR}/ # import NEGLIGIBLE_ML_THRESHOLD from tests ONLY mkdir -vp ${TARGETDIR}/tests grep NEGLIGIBLE_ML_THRESHOLD ${PARENTDIR}/tests/__init__.py | tee ${TARGETDIR}/tests/__init__.py cp -v ${PARENTDIR}/fuzz/__main__.py ${TARGETDIR}/fuzz/ cp -v ${PARENTDIR}/fuzz/minimizing.sh ${TARGETDIR}/fuzz/ for f in $(find ${PARENTDIR}/${CORPUS_DIR} -type f -name "${j}*"); do mv -vf ${f} ${TARGETDIR}/${CORPUS_DIR}/; done if [ "${t}" == "${j}" ]; then cd ${TARGETDIR}/fuzz (nohup bash -c "./minimizing.sh") & job_id=$! JOBS[${j}]=${job_id} fi cd ${THISDIR} done BUSY=8 # wait for job finishing while [ 0 -ne ${BUSY} ]; do i=$(( ${BUSY} * 10 )) echo -en "\nSleep seconds:" while [ 0 -lt $i ]; do echo -n " $i" i=$(( ${i} - 1 )) sleep 1 done BUSY=0 echo -en "\nCheck jobs:" for x in $(seq 0 15); do j=$(printf "%01x" ${x}) job_id=${JOBS[$j]} if [ -z "${job_id}" ]; then continue elif kill -0 ${job_id}; then BUSY=$(( 1 + ${BUSY} )) echo -n " job $j is alive" else echo -n " job $j has done" fi done done unset JOBS # collect for x in $(seq 0 15); do j=$(printf "%01x" ${x}) TARGETDIR=${THISDIR}/${j} for f in $(find ${TARGETDIR}/${CORPUS_DIR} -type f); do mv -vf ${f} ${PARENTDIR}/${CORPUS_DIR}/; done rm -fr ${TARGETDIR} done # last minimization cd ${THISDIR} (./minimizing.sh) SPENT_TIME=$(date -ud "@$(( $(date +%s) - ${START_TIME} ))" +"%H:%M:%S") echo "<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}" ================================================ FILE: fuzz/reducing.sh ================================================ #!/usr/bin/env bash #set -x set -e START_TIME=$(date +%s) echo ">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)" THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null 2>&1 && pwd )" cd "${THISDIR}/.." CORPUS_DIR=fuzz/corpus REDUCING_DIR=fuzz/.corpus.reducing # DO instrument to find new seeds export DO_ATHERIS_INSTRUMENT=1 function get_size() { r=0 if [ -d $1 ]; then for f in $(find $1 -type f); do r=$(( $r + $(stat --format=%s $f) )) done fi echo $r } function get_count() { r=0 if [ -d $1 ]; then r=$(ls $1 | wc -l) fi echo $r } uniq_corpus_size=$(get_size ${CORPUS_DIR}) full_corpus_size=$(get_size ${REDUCING_DIR}) uniq_corpus_count=$(get_count ${CORPUS_DIR}) full_corpus_count=$(get_count ${REDUCING_DIR}) cp -vf fuzz/__main__.py .reducing.py while [ $uniq_corpus_size -ne $full_corpus_size ] || [ $uniq_corpus_count -ne $full_corpus_count ]; do if [ 0 -eq $uniq_corpus_count ]; then echo "ERROR: Empty input ${CORPUS_DIR} dir!" exit 1; fi rm -vfr ${REDUCING_DIR} mkdir -vp ${REDUCING_DIR} mv -vf ${CORPUS_DIR}/* ${REDUCING_DIR}/ ./.reducing.py \ -rss_limit_mb=6000 \ -verbosity=1 \ -merge=1 \ ${CORPUS_DIR}/ \ ${REDUCING_DIR}/ \ ; uniq_corpus_size=$(get_size ${CORPUS_DIR}) full_corpus_size=$(get_size ${REDUCING_DIR}) uniq_corpus_count=$(get_count ${CORPUS_DIR}) full_corpus_count=$(get_count ${REDUCING_DIR}) if [ 0 -eq $uniq_corpus_size ] || \ [ 0 -eq $full_corpus_size ] || \ [ 0 -eq $uniq_corpus_count ] || \ [ 0 -eq $full_corpus_count ]; then echo "something went wrong" exit 1 fi done if [ $uniq_corpus_size -eq $full_corpus_size ] && [ $uniq_corpus_count -eq $full_corpus_count ]; then rm -vfr .reducing.py ${REDUCING_DIR} fi SPENT_TIME=$(date -ud "@$(( $(date +%s) - ${START_TIME} ))" +"%H:%M:%S") echo "<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}" ================================================ FILE: fuzz/requirements.txt ================================================ # Fuzzing atheris==2.3.0; python_version < '3.12' atheris==3.0.0; python_version >= '3.12' and python_version < '3.14' # auxiliary. should be installed from ../requirements.txt (pytest-cov) coverage ================================================ FILE: pyproject.toml ================================================ [project] name = "credsweeper" dynamic = ["version"] description = "Credential Sweeper" authors = [ ] dependencies = [ "base58", "beautifulsoup4>=4.11.0", "colorama", "cryptography", "GitPython", "humanfriendly", "lxml", "numpy", "odfpy", "onnxruntime", "openpyxl", "pandas", "pdfminer.six", "pybase62", "pyjks", "python-dateutil", "python-docx", "python-pptx", "PyYAML", "pyxlsb", "rpmfile", "striprtf", "whatthepatch", "xlrd", ] requires-python = ">=3.10" readme = "README.md" license = {text = "MIT"} classifiers = [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Security", "Topic :: Software Development :: Quality Assurance", ] [project.urls] Homepage = "https://github.com/Samsung/CredSweeper" "Bug Tracker" = "https://github.com/Samsung/CredSweeper/issues" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.version] path = "credsweeper/__init__.py" [tool.hatch.build.targets.sdist] ignore-vcs = true only-include = ["/credsweeper"] [project.scripts] credsweeper = "credsweeper.__main__:main" ================================================ FILE: pytest.ini ================================================ [pytest] pythonpath = credsweeper testpaths = tests ================================================ FILE: requirements.txt ================================================ # Python 3.10.20 # pip 26.0.1 # build requirement build==1.5.0 hatchling==1.29.0 # 1.27.0 creates Metadata-Version: 2.4 which is not supported fully by publish github action #hatchling==1.26.3 # check build twine==6.2.0 # Common requirements base58==2.1.1 beautifulsoup4==4.14.3 colorama==0.4.6 cryptography==48.0.0 GitPython==3.1.50 humanfriendly==10.0 lxml==6.1.0 numpy==2.2.6; python_version == '3.10' numpy==2.4.4; python_version > '3.10' odfpy==1.4.1 xlrd==2.0.2 striprtf==0.0.32 # onnxruntime - ML engine onnxruntime==1.23.2; python_version < '3.14' onnxruntime==1.26.0; python_version >= '3.14' # openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files openpyxl==3.1.5 # pandas - ML requirement and excel data reading pandas==2.3.3; python_version == '3.10' pandas==3.0.3; python_version > '3.10' pdfminer.six==20260107 pybase62==1.0.0 pyjks==20.0.0 python-dateutil==2.9.0.post0 python-docx==1.2.0 python-pptx==1.0.2 PyYAML==6.0.3 pyxlsb==1.0.10 rpmfile==2.2.1 whatthepatch==1.0.7 # Auxiliary packages for development # tests deepdiff flake8 hypothesis pytest pytest-cov pytest-html pytest-random-order # linters pylint mypy yapf # stubs lxml-stubs pandas-stubs # types types-beautifulsoup4 types-colorama types-lxml types-PyYAML types-python-dateutil types-pyjks types-regex types-humanfriendly types-whatthepatch ================================================ FILE: tests/README.md ================================================ # About the test credentials All credentials that in this directory are invalid credentials. They are just test purpose credentials for CredSweeper. So don't confuse it as an actual credential. ================================================ FILE: tests/__init__.py ================================================ from pathlib import Path # total number of files in test samples SAMPLES_FILES_COUNT = 198 # ML_DELTA for different platforms which may produce a dribbling in ml_probability ML_DELTA = 0.0001 # float value of ML threshold is used to display possible lowest values ZERO_ML_THRESHOLD = 0.0 # with option --doc & ZERO_ML_THRESHOLD SAMPLES_IN_DOC = 959 # credentials count after scan without filters and ML validations SAMPLES_REGEX_COUNT = 716 # credentials count after scan with filters and without ML validation SAMPLES_FILTERED_COUNT = 579 # credentials count after default post-processing SAMPLES_POST_CRED_COUNT = 531 # archived credentials that are not found without --depth SAMPLES_IN_DEEP_1 = SAMPLES_POST_CRED_COUNT + 140 SAMPLES_IN_DEEP_2 = SAMPLES_IN_DEEP_1 + 13 SAMPLES_IN_DEEP_3 = SAMPLES_IN_DEEP_2 + 4 # well known string with all latin letters AZ_DATA = b"The quick brown fox jumps over the lazy dog" # Assume, there should be only ASCII symbols AZ_STRING = AZ_DATA.decode(encoding="ascii", errors="strict") # tests directory - use ONLY this file relevance for "release_test" workflow TESTS_PATH = Path(__file__).resolve().parent # test samples directory SAMPLES_PATH = TESTS_PATH / "samples" SAMPLE_TAR = SAMPLES_PATH / "pem_key.tar" SAMPLE_ZIP = SAMPLES_PATH / "pem_key.zip" SAMPLE_HTML = SAMPLES_PATH / "test.html" SAMPLE_DOCX = SAMPLES_PATH / "sample.docx" SAMPLE_PY = SAMPLES_PATH / "sample.py" SAMPLE_DEB = SAMPLES_PATH / "sample.deb" SAMPLE_SQLITE = SAMPLES_PATH / "sample.sqlite" ================================================ FILE: tests/common/__init__.py ================================================ ================================================ FILE: tests/common/test_confidence.py ================================================ import unittest from credsweeper.common.constants import Confidence class TestConfidence(unittest.TestCase): def test_severity_p(self): self.assertEqual(Confidence.MODERATE, Confidence.get(Confidence.MODERATE)) self.assertEqual(Confidence.WEAK, Confidence.get("WeaK")) self.assertEqual(Confidence.MODERATE, Confidence.get("MODERATE")) self.assertEqual(Confidence.STRONG, Confidence.get("strong")) def test_severity_n(self): self.assertIsNone(Confidence.get(None)) self.assertIsNone(Confidence.get(1)) self.assertIsNone(Confidence.get([1, 2, 3])) self.assertIsNone(Confidence.get({1, 2, 3})) self.assertIsNone(Confidence.get("None")) self.assertIsNone(Confidence.get("HI-GH")) self.assertIsNone(Confidence.get(" HI GH ")) def test_severity_comparison_p(self): self.assertTrue(Confidence.WEAK < Confidence.MODERATE) self.assertTrue(Confidence.WEAK < Confidence.STRONG) self.assertTrue(Confidence.MODERATE < Confidence.STRONG) test_list = [Confidence.MODERATE, Confidence.STRONG, Confidence.WEAK] test_list.sort() self.assertListEqual([Confidence.WEAK, Confidence.MODERATE, Confidence.STRONG], test_list) def test_severity_comparison_n(self): self.assertFalse(Confidence.MODERATE < Confidence.WEAK) self.assertFalse(Confidence.WEAK > Confidence.MODERATE) self.assertFalse(Confidence.WEAK > Confidence.STRONG) self.assertFalse(Confidence.MODERATE > Confidence.STRONG) ================================================ FILE: tests/common/test_keyword_checklist.py ================================================ from unittest import TestCase from credsweeper.common import KeywordChecklist from credsweeper.utils.util import Util class TestKeywordChecklist(TestCase): def test_keyword_set_p(self): # quick test to match all keywords for regex for i in KeywordChecklist().keyword_set: self.assertLessEqual(3, len(i)) self.assertRegex(i, r"[a-z0-9.]{3,500}") def test_morpheme_set_p(self): # quick test to match all morphemes for regex for i in KeywordChecklist().morpheme_set: self.assertLessEqual(3, len(i)) # valid symbols for variable names self.assertRegex(i, r"[a-z0-9_/.\\:]{3,500}") def test_keyword_set_n(self): # checks whether the keywords are unique, in lower case and not shorter than 3 symbols keyword_checklist_bytes = Util.read_data(KeywordChecklist.KEYWORD_PATH) keyword_set = set(keyword_checklist_bytes.decode().split()) new_set = set() wrong_items = [] for i in keyword_set: if i.lower() == i and 3 <= len(i): new_set.add(i) else: wrong_items.append(i) if wrong_items: # writes correct checklist to output file - it must be applied with open(KeywordChecklist.KEYWORD_PATH, "w") as f: # use alphabet sorting to keep constant order and reduce git diff text = '\n'.join(sorted(list(new_set))) f.write(text) f.write('\n') self.assertFalse(wrong_items, "Keywords list has been rearranged and updated") def test_morpheme_set_n(self): # check whether the morphemes are optimized and updates the file with optimized list morpheme_checklist_data = Util.read_data(KeywordChecklist.MORPHEME_PATH) original_morpheme_list = morpheme_checklist_data.decode().split() original_morpheme_list_len = len(original_morpheme_list) morpheme_set = set(original_morpheme_list) optimized_morpheme_list = sorted(list(morpheme_set), key=lambda e: len(e)) is_optimized = False while not is_optimized: morphemes_to_remove_set = set() optimized_morpheme_list_len = len(optimized_morpheme_list) idx = 0 for optimized_morpheme in optimized_morpheme_list: idx += 1 if optimized_morpheme.lower() == optimized_morpheme and 3 <= len(optimized_morpheme): # search in rest list whether the items have the substring local_idx = idx while local_idx < optimized_morpheme_list_len: if optimized_morpheme in optimized_morpheme_list[local_idx]: # longer morpheme should be removed because it includes short morpheme inside morphemes_to_remove_set.add(optimized_morpheme_list[local_idx]) local_idx += 1 else: # wrong - must be removed morphemes_to_remove_set.add(optimized_morpheme) for to_remove in morphemes_to_remove_set: optimized_morpheme_list.remove(to_remove) is_optimized = 0 == len(morphemes_to_remove_set) diff = original_morpheme_list_len - len(optimized_morpheme_list) if diff: with open(KeywordChecklist.MORPHEME_PATH, "w") as f: # use alphabet sorting to keep constant order and reduce git diff text = '\n'.join(sorted(optimized_morpheme_list)) f.write(text) f.write('\n') self.assertEqual(0, diff, "Morpheme list has been rearranged and updated") ================================================ FILE: tests/common/test_keyword_pattern.py ================================================ import pytest from credsweeper.common.keyword_pattern import KeywordPattern from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.utils.util import Util from tests.filters.conftest import KEYWORD_PASSWORD_PATTERN class TestKeywordPattern: @pytest.mark.parametrize("line", ["melon is 'banana'"]) def test_separator_n(self, config: Config, file_path: pytest.fixture, line: str) -> None: pattern = KeywordPattern.get_keyword_pattern("melon") line_data = LineData(config, line, 0, 1, file_path, Util.get_extension(file_path), info="dummy", pattern=pattern) assert line_data.value is None @pytest.mark.parametrize("line", ["melon = 'banAna'", "melon : 'banAna'", "melon := 'banAna'"]) def test_separator_p(self, config: Config, file_path: pytest.fixture, line: str) -> None: pattern = KeywordPattern.get_keyword_pattern("melon") line_data = LineData(config, line, 0, 1, file_path, Util.get_extension(file_path), info="dummy", pattern=pattern) assert line_data.value == "banAna" @pytest.mark.parametrize( "line, value", [ # ["""password='\\\\'secret-1\\\\''""", """\\'secret-1\\'"""], # todo # ['''password="\\"secret-2\\""''', '''\\"secret-2\\"'''], # todo # ["""password=rb'\\'secret=1\\''""", """\\'secret=1\\'"""], # todo # ['''password=f"\\"secret=2\\""''', '''\\"secret=2\\"'''], # todo # ['''password=r"\\\\"secret=3\\\\""''', '''\\"secret=3\\"'''], # todo # ['''"password = 'sec;$2`\\'[\\/*;ret';";''', '''sec;$2`\\'[\\/*;ret'''], # todo ['PASSWORD = os.environ.get("PASSWORD") or "at5G6zi!m"', "at5G6zi!m"], ["deFINE \\n\\t('DB_PASSWORD',\\n\\t'devSeCrEt');", "devSeCrEt"], ['''...log=1;User ID=X3;password=Quantum42!\\""''', '''Quantum42!'''], [ 'Password: []byte{134, 217, 176, 23, 206, 245, 164, 94, 102, 114, 172, 33, 248, 215, 246, 357},', '134, 217, 176, 23, 206, 245, 164, 94, 102, 114, 172, 33, 248, 215, 246, 357' ], [ 'password = util.getPasswordFromHex("c275ecec7b5eda8a330bec5bc275b3f1", None)', "c275ecec7b5eda8a330bec5bc275b3f1" ], ['password = util.getPassword("User1", "D3fa9UL7Pa5s")', "D3fa9UL7Pa5s"], ['password = i[2].get("PASS", "D3fA9UL7Pa5s")', "D3fA9UL7Pa5s"], ['password = os.getenv("DB_PASS", "D3fA9Ul7pAs5")', "D3fA9Ul7pAs5"], ["password = data.get ( 'MY_PASS' , default = 'D3fA9Ul7pA5s' ) ", "D3fA9Ul7pA5s"], [ 'PASSWORD = bytes([0xDF, 0x42, 0xD8, 0x34, 0xDD, 0x1E, 0xD8, 0x24, 0xD8, 0x37, 0xD8, 0x01, 0xD8, 0x52])', "0xDF, 0x42, 0xD8, 0x34, 0xDD, 0x1E, 0xD8, 0x24, 0xD8, 0x37, 0xD8, 0x01, 0xD8, 0x52" ], ['password = superCrypto ( "CEKPET" ) ;', "CEKPET"], ['self.setPassword("0bead47f3c5bc275ec7b5eda8a333f")', "0bead47f3c5bc275ec7b5eda8a333f"], ['if str(password) == "0bead47f3c5bc275ec7b5eda8a333f":', "0bead47f3c5bc275ec7b5eda8a333f"], ['if [[ "%{password}" =~ "himmelsrand" ]]; then', 'himmelsrand'], ["setPasssword ( 'MY_TEST&PASSWORD!',", "MY_TEST&PASSWORD!"], ["setPasssword('MY_TEST&PASSWORD!')", "MY_TEST&PASSWORD!"], ['#define password {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e}', '0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e'], ['#define password {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e \\', '0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e \\'], ['#define password ";,}d4s@\\on"', ";,}d4s@\\on"], ['%define password "CEKPET"', "CEKPET"], ["set password CEKPET", "CEKPET"], ['password = get_password(option1="CEKPET", option2="KOMETA")', "CEKPET"], [ '{"PWD":[{"kty":"oct","kid":"25b58GCM","k":"Xc_2A"},{"kty":"oct","kid":"09b51KW","k":"KG6wlB-6sIVQ"}]', '"kty":"oct","kid":"25b58GCM","k":"Xc_2A"' ], [ '{"PWD":[{"ktyX":"oct","kid":"25b58GCM","k":"Xc_2A"},{"kty":"oct","kid":"09b51KW","k":"KG6wlB-6sIVQ"}]', 'ktyX' # todo "ktyX":"oct","kid":"25b58GCM","k":"Xc_2A" ], ["pass = Super::Encryptor('seCreT', 'secRet2');", "seCreT"], ['PWD = {"123": "08c8b5b3", 456: "07c6aa05"}', '"123": "08c8b5b3", 456: "07c6aa05"'], ['PWD = {"1234": "abcd", 1: "efgh"}', '1234'], ["password: { other_secret: 'GehE1mNi5',", "GehE1mNi5"], ["byte[] password = new byte[]{0x3, 0x5, 0x8, 0x3, 0x5, 0x8};", "0x3, 0x5, 0x8, 0x3, 0x5, 0x8"], ["byte[]password=new byte[]{0x3,0x5,0x8,0x3,0x5,0x8};", "0x3,0x5,0x8,0x3,0x5,0x8"], ["char[] password = new char[]{'f',\\x03, 02 ,'1', 0};", "'f',\\x03, 02 ,'1', 0"], ["char password[] = {'H', 'e', 'l', 'l', 'o', '\0'};", "'H', 'e', 'l', 'l', 'o', '\0'"], ["char password[] = {0x34, 0x53, 0x53, 0x62, 000};", "0x34, 0x53, 0x53, 0x62, 000"], ["char[] password = new char[]{'b', 'y', 't', 'e', 's', '\\0'};", "'b', 'y', 't', 'e', 's', '\\0'"], ["char[] password = new char[]{023, 010, 041, 033, 043, 000};", "023, 010, 041, 033, 043, 000"], ['final String [] password = new String [] { "GehE1mNi5",', 'GehE1mNi5'], ["private static readonly byte[] password = new byte[] { 'X','3', '4', '0' \\", "'X','3', '4', '0' \\"], ["password=${REMOVE_PREFIX#prefix}", "${REMOVE_PREFIX#prefix}"], ["password='${REMOVE_PREFIX#prefix}'", "${REMOVE_PREFIX#prefix}"], ["password=${cat pass}", "${cat"], ['password=$(echo "pass")', "$(echo"], ["password='$(( 1 + 2 + 3 + 4 ))'", "$(( 1 + 2 + 3 + 4 ))"], ["password=$(( 1 + 2 + 3 + 4 ))", "$(( 1 + 2 + 3 + 4 ))"], ["password='$[[ 1 + 2 + 3 + 4 ]]'", "$[[ 1 + 2 + 3 + 4 ]]"], ["password=$[[ 1 + 2 + 3 + 4 ]]", ""], # obsolete ["password=$[[_1_+_2_+_3_+_4_]]", "$[[_1_+_2_+_3_+_4_]]"], ["password=${array[@]:7:2}", "${array[@]:7:2}"], ["password=${1#*=}", "${1#*=}"], ["A2 ID:master,PW:dipPr10Gg!", "dipPr10Gg!"], ["pass=get->pass(arg1='seCreT', arg2='secRet2'...", "seCreT"], ["The test password => skWu850", "skWu850"], ["$password = Hash::make('GehE1mNi5');", "GehE1mNi5"], ['password = new[] {"GehE1mNi5"}', "GehE1mNi5"], ["password, _ = hex.DecodeString('e1efa5ca09a6beac387c04a5cdc1d491')", "e1efa5ca09a6beac387c04a5cdc1d491"], ["MY_TEST_PASSWORD='(MY_TEST_PASSWORD)'", "(MY_TEST_PASSWORD)"], ["MY_TEST_PASSWORD=$(MY_TEST_PASSWORD)", "$(MY_TEST_PASSWORD)"], ["MY_TEST_PASSWORD='$(MY_TEST_PASSWORD)'", "$(MY_TEST_PASSWORD)"], # https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Expansions ["MY_TEST_PASSWORD=${MY_VAR:?THE VAR IS UNSET}", "${MY_VAR:?THE"], ['''ClientPasswords = new[] { new Password( "SECRET".Sha256() ) },''', "SECRET"], ['''"$password = "10qoakxncnfh47t_''', '''10qoakxncnfh47t_'''], # [ '''copes\":[\"user\"],\"note\":\"Note\",\"password\":\"cc6323cb2223f82f01\",\"upd_at\":\"1765....\",''', '''cc6323cb2223f82f01''' ], # ['''"password = pas:sword # comment''', '''pas:sword'''], ['''x.password=pK5C4tlA/w1cO\\=\\=''', '''pK5C4tlA/w1cO\\=\\='''], # ['''final String body = \"{ \\"passwords\\":\\"i0sEcReT\\\\/MwX3X\\","''', '''i0sEcReT\\\\/MwX3X'''], [ '''\\\"password\\\"=\\u0026gt;\t\\n\\t\\\"lfFTfDT1roc4YbG9hy5cnvX\\n oZ+Sc/wb+CvdF4s==\\\",\\n",''', '''lfFTfDT1roc4YbG9hy5cnvX\\n oZ+Sc/wb+CvdF4s==''' ], [ '''var request = {"password": "{\\"wks\\": \\"8x9s3ga7\\", \\"uzr\": \\"wbm\\"}","Any-Tail":"x\r"};''', '''{\\"wks\\": \\"8x9s3ga7\\", \\"uzr": \\"wbm\\"}''' ], ['''passwords: ["1029384756",''', '''1029384756'''], # ['''passwords:[ "1029384756", "9801726354" ]''', '''1029384756'''], # ['''password="\\"secret-line-wrap\\''', '''secret-line-wrap'''], # ['''password=r"""secret4"""''', '''secret4'''], # ['''password=r\\"\\"\\"secret5\\"\\"\\"''', '''secret5'''], # ['''password="""secret6"""''', '''secret6'''], # ['''password=\\\\"\\\\"\\\\"secret7\\\\"\\\\"\\\\"''', '''secret7'''], # ['''password=\\\\"\\\\"\\\\"secret"7\\\\"\\\\"\\\\"''', '''secret"7'''], # ['''password="""{\\"secret8\\"}"""''', '''{\\"secret8\\"}'''], # ['''password="""secret'9"""''', '''secret'9'''], # ["""password='''secret'6'''""", '''secret'6'''], # ["""password='''secret`8'''""", '''secret`8'''], # ["""password=``secret`7``""", '''secret`7'''], # ["""password=``secret 5``""", '''secret 5'''], # ["""password='secret\\ 5''""", '''secret\\ 5'''], # ["""password=secret\\ 5""", '''secret\\ 5'''], # ["""password=secret 0""", '''secret'''], # ["""password=secret0\\""", '''secret0'''], # ["""password=r'\\"secret\\"'""", '''\\"secret\\"'''], # ['''password=r\\"{\\\\"secret\\\\"}\\"''', '{\\\\"secret\\\\"}'], # ['''password=r"{\\"secret\\"}"''', '{\\"secret\\"}'], # ["""password=b'"secret4"'""", '"secret4"'], # ["""password=rb'\\\\"secret\\\\"'""", '\\\\"secret\\\\"'], # ["""password=r\\'"sec'"'"'"ret"\\'""", '''"sec'"'"'"ret"'''], # ["""\\'\\\\\\\\'password\\\\\\\\': b\\\\\\\\'secret\\\\\\\\'\\'""", "secret"], # ["""'password': b'secret'""", """secret"""], # ["""'password': r'secret'""", """secret"""], # ["""'password': fr'secret'""", """secret"""], # ["""'password': t'{secret}'""", """{secret}"""], # ["""\\'password\\': \\'secret\\'""", """secret"""], # ['''db.setCred("{ \"password\" : \"" + SECRET + "\" }");''', ''' + SECRET + '''], ['''\\"password\\": \\"{\\\\"secret\\\\": \\\\"test\\\\"}\\"''', '{\\\\"secret\\\\": \\\\"test\\\\"}'], # ['''"password": "{\\\\"secret\\\\": \\\\"test\\\\"}"''', '{\\\\"secret\\\\": \\\\"test\\\\"}'], # # normal_str = "First line.\nSecond line.\nEnd of message.\n"; ['''std::string password = R"multiline\\npassword";''', '''multiline\\npassword'''], # ['''const wchar_t* password = L"wchar_t*secret";''', '''wchar_t*secret'''], # ['''const char16_t* password = U"char16_t*secret";''', '''char16_t*secret'''], # ["""char password[] = {'S', 'E', 'C', 'R', 'E', 'T', '\\0'};""", """'S', 'E', 'C', 'R', 'E', 'T', '\\0'""" ], # ['''"password": "{8vi6wL+10fI/eibC7wFwc}"''', '{8vi6wL+10fI/eibC7wFwc}'], # ['''final String password = new String("SECRET") {''', '''SECRET'''], # ['''final OAuth2AccessToken password = new OAuth2AccessToken(\"SEC.RET\");''', '''SEC.RET'''], # ['''password = obfuscate(arg="SECRET") {''', '''SECRET'''], # ['''final String password = new String(Super(Encrypted("SECRET"))) {''', '''SECRET'''], # ['''final String password = new String(Super( Encrypted("SECRET", "dummy"))) {''', '''SECRET'''], # ["""'password': 'ENC(lqjdoxlandicpfpqk)'""", """ENC(lqjdoxlandicpfpqk)"""], # ["""'password': 'ENC[lqjdoxlandicpfpqk]'""", """ENC[lqjdoxlandicpfpqk]"""], # ['''password24=secret42''', 'secret42'], # ['''password24=secret42\\ ''', 'secret42\\ '], # ['''password24=secret42\\''', 'secret42'], # ['''password24=secret42\\n''', 'secret42'], # ['password = 3VNdhWT3oFo5I7faffKO\\\neEagnK7tYBcGxhla\n;', '''3VNdhWT3oFo5I7faffKO'''], ['password = "3VNdhWT3oFo5I7faffKO\n gnK7tYBcGxhla\n";', '''3VNdhWT3oFo5I7faffKO\n gnK7tYBcGxhla\n'''], [ "//&user%5Bemail%5D=credsweeper%40example.com&user%5Bpassword%5D=Dmdkesfdsq452%23%40!&user%5Bpassword_", "Dmdkesfdsq452%23%40!" ], ["password%3dDmsfdsq452!&user%5Bpassword_", "Dmsfdsq452!"], ["MY_TEST_PASSWORD={MY_TEST_PASSWORD}", "MY_TEST_PASSWORD"], ["MY_TEST_PASSWORD=(MY_TEST_PASSWORD)", "MY_TEST_PASSWORD"], ["MY_TEST_PASSWORD=", ""], # <> are used in future to detect a template ["MY_TEST_PASSWORD=[MY_TEST_PASSWORD]", "MY_TEST_PASSWORD"], ["MY_TEST_PASSWORD=MY_TEST&PASSWORD!", "MY_TEST&PASSWORD!"], ["MY_TEST_PASSWORD='MY_TEST&PASSWORD!'", "MY_TEST&PASSWORD!"], ]) def test_keyword_pattern_p(self, config: Config, file_path: pytest.fixture, line: str, value: str) -> None: line_data = LineData(config, line, 0, 1, file_path, Util.get_extension(file_path), info="dummy", pattern=KEYWORD_PASSWORD_PATTERN) assert line_data.value == value, KEYWORD_PASSWORD_PATTERN.pattern @pytest.mark.parametrize("line", [ "set_unusable_api() should not found", "https://fonts.googleapis.com/css2?family=Montserrat:wght@500;700;900&family=Roboto:wght@300;400;500;700;900" "&family=Roboto+Mono:wght@300;400;600;900&display=swap", "reset api example", ]) def test_keyword_pattern_n(self, config: Config, file_path: pytest.fixture, line: str) -> None: pattern = KeywordPattern.get_keyword_pattern("api") line_data = LineData(config, line, 0, 1, file_path, "file_type", "info", pattern) assert line_data.value is None ================================================ FILE: tests/common/test_regex.py ================================================ import re import pytest class TestRegex: TEST_AWS_ID = "ASIA0123456789ABCDEF" TEST_AWS_REGEX = re.compile("(^|[^0-9A-Za-z])(?P(AKIA|ASIA)[0-9A-Z]{16,17})([^0-9A-Za-z]|$)") @pytest.mark.parametrize( # 'text', # [ # f"{TEST_AWS_ID}XX", # 22 symbols f"i{TEST_AWS_ID}", # f"X{TEST_AWS_ID}", # f"{TEST_AWS_ID[0:18]}", # f"{TEST_AWS_ID[0:18]}x", # f"{TEST_AWS_ID[0:18]}+", # f"{TEST_AWS_ID[0:18]}/", # f"{TEST_AWS_ID[1:19]}" # ]) def test_regex_n(self, text: str): assert TestRegex.TEST_AWS_REGEX.search(text) is None @pytest.mark.parametrize( # 'text', # [ # f"{TEST_AWS_ID}", # f"#@(-{TEST_AWS_ID})+*&^%$", # obviously inside delimiters f"N={TEST_AWS_ID}", # f"\"{TEST_AWS_ID}\"", # f"{TEST_AWS_ID}/6/g'", # f"={TEST_AWS_ID}%2F", # f"sed 's/{TEST_AWS_ID}/6/g'", # f"{TEST_AWS_ID}X", # 21 symbols in ID f"--key {TEST_AWS_ID}X --help" # 21 symbols in ID ]) def test_regex_p(self, text: str): obtained = TestRegex.TEST_AWS_REGEX.search(text) assert obtained is not None found = False for i in obtained.groups(): pos = i.find(TestRegex.TEST_AWS_ID) if -1 != pos and 0 == pos: found = True break assert found ================================================ FILE: tests/common/test_severity.py ================================================ import unittest from credsweeper.common.constants import Severity class TestSeverity(unittest.TestCase): def test_severity_p(self): self.assertEqual(Severity.MEDIUM, Severity.get(Severity.MEDIUM)) self.assertEqual(Severity.INFO, Severity.get("inFo")) self.assertEqual(Severity.LOW, Severity.get("LoW")) self.assertEqual(Severity.MEDIUM, Severity.get("MEDIUM")) self.assertEqual(Severity.HIGH, Severity.get(" HIGH ")) self.assertEqual(Severity.CRITICAL, Severity.get("critical")) def test_severity_n(self): self.assertIsNone(Severity.get(None)) self.assertIsNone(Severity.get(1)) self.assertIsNone(Severity.get([1, 2, 3])) self.assertIsNone(Severity.get({1, 2, 3})) self.assertIsNone(Severity.get("None")) self.assertIsNone(Severity.get("HI-GH")) self.assertIsNone(Severity.get(" HI GH ")) def test_severity_comparison_p(self): self.assertTrue(Severity.INFO < Severity.LOW) self.assertTrue(Severity.INFO < Severity.MEDIUM) self.assertTrue(Severity.INFO < Severity.HIGH) self.assertTrue(Severity.INFO < Severity.CRITICAL) self.assertTrue(Severity.LOW < Severity.MEDIUM) self.assertTrue(Severity.LOW < Severity.HIGH) self.assertTrue(Severity.LOW < Severity.CRITICAL) self.assertTrue(Severity.MEDIUM < Severity.HIGH) self.assertTrue(Severity.MEDIUM < Severity.CRITICAL) self.assertTrue(Severity.HIGH < Severity.CRITICAL) def test_severity_comparison_n(self): self.assertFalse(Severity.CRITICAL < Severity.HIGH) self.assertFalse(Severity.HIGH < Severity.MEDIUM) self.assertFalse(Severity.MEDIUM < Severity.LOW) self.assertFalse(Severity.LOW < Severity.INFO) self.assertFalse(Severity.INFO > Severity.LOW) self.assertFalse(Severity.INFO > Severity.MEDIUM) self.assertFalse(Severity.INFO > Severity.HIGH) self.assertFalse(Severity.INFO > Severity.CRITICAL) self.assertFalse(Severity.LOW > Severity.MEDIUM) self.assertFalse(Severity.LOW > Severity.HIGH) self.assertFalse(Severity.LOW > Severity.CRITICAL) self.assertFalse(Severity.MEDIUM > Severity.HIGH) self.assertFalse(Severity.MEDIUM > Severity.CRITICAL) self.assertFalse(Severity.HIGH > Severity.CRITICAL) ================================================ FILE: tests/config/__init__.py ================================================ ================================================ FILE: tests/config/test_config.py ================================================ from unittest import TestCase from credsweeper.app import APP_PATH from credsweeper.utils.util import Util class ConfigTest(TestCase): def test_extension_check_p(self): file_name = APP_PATH / "secret" / "config.json" self.config = Util.json_load(str(file_name)) self.assertIsNotNone(self.config) self.assertTrue(isinstance(self.config, dict)) self.assertIn("exclude", self.config.keys()) self.assertTrue(isinstance(self.config["exclude"], dict)) self.assertIn("containers", self.config["exclude"].keys()) self.assertTrue(isinstance(self.config["exclude"]["containers"], list)) self.assertIn("extension", self.config["exclude"].keys()) self.assertTrue(isinstance(self.config["exclude"]["extension"], list)) container_set = set(self.config["exclude"]["containers"]) extension_set = set(self.config["exclude"]["extension"]) # the sets MUST have no intersection self.assertFalse(container_set.intersection(extension_set)) # all extensions MUST be in lower self.assertTrue(all(i.islower() for i in container_set)) self.assertTrue(all(i.islower() for i in extension_set)) ================================================ FILE: tests/conftest.py ================================================ import datetime from argparse import Namespace from typing import Optional import pytest from credsweeper.app import APP_PATH from credsweeper.common.constants import Severity from credsweeper.config.config import Config from credsweeper.rules.rule import Rule from credsweeper.scanner.scanner import Scanner, RULES_PATH from credsweeper.utils.util import Util from tests import SAMPLES_PATH @pytest.fixture def python_file_path() -> str: return f"test_file_{str(datetime.datetime.now())}.py" @pytest.fixture def file_path() -> str: return f"test_file_{str(datetime.datetime.now())}" @pytest.fixture def args() -> Namespace: file_name = SAMPLES_PATH / "password.gradle" return Namespace(path=[file_name], json_filename=None) @pytest.fixture def config() -> Config: file_name = APP_PATH / "secret" / "config.json" config_dict = Util.json_load(file_name) config_dict["use_filters"] = True config_dict["find_by_ext"] = False config_dict["exclude"]["containers"] = [".gz", ".zip"] config_dict["exclude"]["documents"] = [".docx", ".pdf"] config_dict["exclude"]["extension"] = [".jpg", ".bmp"] config_dict["pedantic"] = False config_dict["depth"] = 0 config_dict["doc"] = False config_dict["find_by_ext_list"] = [".txt", ".inf"] config_dict["size_limit"] = None config_dict["severity"] = Severity.INFO return Config(config_dict) @pytest.fixture def rule(rule_name: str, config: Config, rule_path: str) -> Optional[Rule]: scanner = Scanner(config, rule_path) for rule, scanner in scanner.rules_scanners: if rule.rule_name == rule_name: return rule return None @pytest.fixture def rule_path() -> str: return str(RULES_PATH) @pytest.fixture def scanner(rule: Rule, config: Config, rule_path: str) -> Scanner: scanner = Scanner(config, rule_path) scanner.rules_scanners = [(rule, Scanner.get_scanner(rule))] return scanner @pytest.fixture def scanner_without_filters(rule: Rule, config: Config, rule_path: str): config.use_filters = False scanner = Scanner(config, rule_path) scanner.rules_scanners = [(rule, Scanner.get_scanner(rule))] return scanner ================================================ FILE: tests/credentials/__init__.py ================================================ ================================================ FILE: tests/credentials/test_augment_candidates.py ================================================ import copy import unittest from unittest.mock import patch from credsweeper.credentials.augment_candidates import augment_candidates from credsweeper.credentials.candidate import Candidate from credsweeper.credentials.line_data import LineData from tests import AZ_STRING class TestAugmentCandidates(unittest.TestCase): def test_augment_candidates_p(self): with patch.object(LineData, LineData.initialize.__name__): candidate = Candidate.get_dummy_candidate(None, "file_path", "file_type", "info", "rule_name") candidate.line_data_list[0].value = AZ_STRING candidates = [candidate] additional_candidates = copy.deepcopy(candidates) self.assertTrue(candidate.compare(additional_candidates[0])) # the value is different additional_candidates[0].line_data_list[0].value = f"\"{AZ_STRING}\"" self.assertFalse(candidate.compare(additional_candidates[0])) # additional candidates must be added augment_candidates(candidates, additional_candidates) self.assertEqual(2, len(candidates)) self.assertEqual(AZ_STRING, candidates[0].line_data_list[0].value) self.assertEqual(f"\"{AZ_STRING}\"", candidates[1].line_data_list[0].value) def test_augment_candidates_n(self): with patch.object(LineData, LineData.initialize.__name__): candidate = Candidate.get_dummy_candidate(None, "file_path", "file_type", "info", "rule_name") candidate.line_data_list[0].value = AZ_STRING candidates = [candidate] # empty additional candidates augment_candidates(candidates, []) self.assertEqual(1, len(candidates)) # the same value augment_candidates(candidates, copy.deepcopy(candidates)) self.assertEqual(1, len(candidates)) self.assertEqual(AZ_STRING, candidates[0].line_data_list[0].value) ================================================ FILE: tests/credentials/test_credential_manager.py ================================================ import pytest from credsweeper.app import CredSweeper from credsweeper.file_handler.string_content_provider import StringContentProvider class TestCredentialManager: @pytest.mark.parametrize( "line", ["apiKeyToken = 'mybstscrt'", "SecretToken = 'mybstscrt'", "secret = AKIAGIREOGIAWSKEY123"]) def test_groups_p(self, line): cred_sweeper = CredSweeper() provider = StringContentProvider([line]) detections = cred_sweeper.scanner.scan(provider) cred_sweeper.credential_manager.set_credentials(detections) groups = cred_sweeper.credential_manager.group_credentials() # Assert that credentials can be grouped assert len(groups) == 1 @pytest.mark.parametrize("line", [ "func(secret='acbd22', token='longscrttok')", "single_token='acbd22'", "{secret: 'acbd22', token: 'longscrttok'}" ]) def test_groups_n(self, line): cred_sweeper = CredSweeper() provider = StringContentProvider([line]) detections = cred_sweeper.scanner.scan(provider) cred_sweeper.credential_manager.set_credentials(detections) groups = cred_sweeper.credential_manager.group_credentials() # Assert that no credentials can be grouped in tested cases assert len(groups) == len(detections) ================================================ FILE: tests/credentials/test_line_data.py ================================================ import re import string import unittest import pytest from credsweeper.common.constants import MAX_LINE_LENGTH, StartEnd from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.utils.util import Util from tests import AZ_STRING class TestLineData: @pytest.mark.parametrize("line", [ '"url" : "https://my.site?a=b&{}=ngh679x&c=d"', '"url" : "https://my.site?{}=ngh679x&c=d"', '"url" : "https://my.site?a=b&{}=ngh679x"', ]) @pytest.mark.parametrize("var_name, rule_name", [("mysecret", "Secret"), ("password", "Password"), ("aws_token", "Token")]) def test_url_params_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str, rule_name: str, config: Config) -> None: """ Test that URL args are parsed correctly with regard to ? and & characters. Rerun few times with different variable names to assure that different rules behave in a same way """ formatted_line = line.format(var_name) line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.value == "ngh679x" assert line_data.variable == var_name @pytest.mark.parametrize("line", ['{} = "ngh679x"']) @pytest.mark.parametrize("var_name, rule_name", [("mysecret", "Secret"), ("password", "Password"), ("aws_token", "Token")]) def test_simple_case_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str, rule_name: str, config: Config) -> None: """Check that most simple case for credentials is parsed correctly""" formatted_line = line.format(var_name) line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.value == "ngh679x" assert line_data.variable == var_name @pytest.mark.parametrize("line, varname, value, rule_name", [('"my password": "ngh671x"', "my password", "ngh671x", "Password"), ('"my password": ‘ngh672x“', "my password", "‘ngh672x“", "Password"), ('"my password": “““ngh672x”””', "my password", "ngh672x", "Password"), ('"my password": "example: “ngh6794”"', "my password", "example: “ngh6794”", "Password"), ('"my password in JSON": "ngh679x"', "my password in JSON", "ngh679x", "Password")]) def test_multiple_word_variable_name_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, varname: str, value: str, rule_name: str, config: Config) -> None: """Check that if variable name contain spaces (like field in JSON) it would be parsed correctly""" line_data = LineData(config, line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.variable == varname assert line_data.value == value @pytest.mark.parametrize("line, varname, value, rule_name", [ ('"dummy password": “““‘‘‘”””', "dummy password", '', "Password"), ]) def test_multiple_word_variable_name_n(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, varname: str, value: str, rule_name: str, config: Config) -> None: """Check correctness sanitize value - no exception raises""" line_data = LineData(config, line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.variable == varname assert line_data.value == value @pytest.mark.parametrize( "line", ['{} = my_func("ngh679x")', '{} = my_func(arg1="ngh679x")', '{} = my_func1(my_func2("ngh679x"))']) @pytest.mark.parametrize("var_name, rule_name", [("mysecret", "Secret"), ("password", "Password"), ("aws_token", "Token")]) def test_function_call_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str, rule_name: str, config: Config) -> None: """Check that secrets in function arguments parsed in a correct way (without argument name)""" formatted_line = line.format(var_name) line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.value == "ngh679x" assert line_data.variable == var_name @pytest.mark.parametrize("line", [ 'something = my_func({}="ngh679x")', 'something = my_func(a=b, {}="ngh679x")', 'something = my_func(a=b, {}="ngh679x", c=d)', ]) @pytest.mark.parametrize("var_name, rule_name", [("mysecret", "Secret"), ("password", "Password"), ("aws_token", "Token")]) def test_function_argument_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str, rule_name: str, config: Config) -> None: """Check that secrets in function arguments parsed in a correct way (with argument name)""" formatted_line = line.format(var_name) line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.value == "ngh679x" assert line_data.variable == var_name @pytest.mark.parametrize("line", [ "./myprog --{}='ngh679x' --path=/home/me", "./myprog --{}=ngh679x --path=/home/me", "./myprog --{}=ngh679x -d library/mysql:5.7.13", "./myprog --{}=ngh679x >> logfile.log", "./myprog --{}=ngh679x | tee logfile.log", "./myprog --{}=ngh679x &> logfile.log", "./myprog --{}=ngh679x 2> logfile.log", ]) @pytest.mark.parametrize("var_name, rule_name", [("mysecret", "Secret"), ("password", "Password"), ("aws_token", "Token")]) def test_cli_arguments_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str, rule_name: str, config: Config) -> None: """Check credentials declared in CLI arguments""" formatted_line = line.format(var_name) line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.value == "ngh679x" assert line_data.variable == var_name @pytest.mark.parametrize("line", [ "./myprog --{}=' --no-password ' --path=/home/me", ]) @pytest.mark.parametrize("var_name, rule_name", [("password", "Password")]) def test_cli_arguments_n(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str, rule_name: str, config: Config) -> None: """Check clean_bash_parameters negative case """ formatted_line = line.format(var_name) line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) assert line_data.variable == var_name class TestLineDataStartEnd(unittest.TestCase): def test_start_end_p(self) -> None: """Check start-end of found credential""" line_data = LineData(None, "0123456789", 0, 1, "", "", "", re.compile(r"(?P[3-7]+)")) self.assertEqual("34567", line_data.value) self.assertEqual(3, line_data.value_start) self.assertEqual(8, line_data.value_end) def test_search_start_end_p(self) -> None: """Check property search start-end""" line = "_" * MAX_LINE_LENGTH + "X" + "_" * MAX_LINE_LENGTH pattern = re.compile(r"(?PX)") line_data = LineData(None, line, 0, 1, "", "", "", pattern, pattern.search(line)) self.assertEqual("X", line_data.value) self.assertEqual(MAX_LINE_LENGTH, line_data.value_start) self.assertEqual(1 + MAX_LINE_LENGTH, line_data.value_end) def test_part_url_sanitize_p(self) -> None: line_data = LineData(None, "39084?token=3487263-2384579834-234732875-345&key=DnBeiGdgy6253fytfdDHGg&hasToBeFound=2", 0, 1, "", "", "", re.compile(r"(?Ptoken)(?P=)(?P.+)")) self.assertEqual("token", line_data.variable) self.assertEqual("3487263-2384579834-234732875-345", line_data.value) def test_hash_text_n(self): self.assertEqual("", LineData.get_hash_or_subtext('', hashed=True)) def test_hash_text_p(self): # $ echo -n "The quick brown fox jumps over the lazy dog" | sha256sum self.assertEqual("d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592", LineData.get_hash_or_subtext(AZ_STRING, hashed=True)) def test_sub_text_n(self): subtext = LineData.get_hash_or_subtext(None, hashed=False, cut_pos=StartEnd(4, 9)) self.assertIsNone(subtext) def test_sub_text_p(self): subtext = LineData.get_hash_or_subtext(AZ_STRING, hashed=False, cut_pos=StartEnd(4, 9)) self.assertEqual(AZ_STRING, subtext) text200sym = f"\t {''.join(string.digits for _ in range(20))}" subtext = LineData.get_hash_or_subtext(text200sym, hashed=False, cut_pos=StartEnd(4, 9)) self.assertEqual((''.join(string.digits for _ in range(13)))[:-2], subtext) def test_toml_parenthesis_sanitize_n(self) -> None: line_data = LineData(None, "secure_cmd token=$(get_token)", 0, 1, "", "", "", re.compile(r".*(?Ptoken)(?P=)(?P.+)")) self.assertEqual("token", line_data.variable) self.assertEqual("$(get_token)", line_data.value) self.assertEqual( "ieUW47@", LineData(None, "$(secure_cmd password=ieUW47@)", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) def test_toml_parenthesis_sanitize_p(self) -> None: line_data = LineData(None, "$(secure_cmd token=get_token)", 0, 1, "", "", "", re.compile(r".*(?Ptoken)(?P=)(?P.+)")) self.assertEqual("token", line_data.variable) self.assertEqual("get_token", line_data.value) def test_toml_parenthesis_pass_sanitize_p(self) -> None: self.assertEqual( "ieUW47@)", LineData(None, "$(secure_cmd) password=ieUW47@)", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) self.assertEqual( "ieUW47@}", LineData(None, "password: ieUW47@}", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P:) (?P.+)")).value) def test_toml_quoted_sanitize_p(self) -> None: self.assertEqual( "ieUW47@}", LineData( None, "${secure_cmd password='ieUW47@}'}", 0, 1, "", "", "", re.compile( r".*(?Ppassword)(?P=)(?P')(?P[^']+)(?P')" )).value) def test_toml_curly_brackets_sanitize_n(self) -> None: self.assertEqual( "ieUW47@}", LineData(None, "${secure_cmd} password=ieUW47@}", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) def test_toml_square_brackets_sanitize_n(self) -> None: self.assertEqual( "ieUW47@]", LineData(None, "$[secure_cmd] password=ieUW47@]", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) def test_toml_extra_sanitize_n(self) -> None: # dummy variant with wrong order self.assertEqual( "", LineData(None, "[{(extra-cleaned-value password=}}]})]}}])", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) def test_tag_sanitize_n(self) -> None: # all tags in value self.assertEqual( "PASS", LineData(None, "password=PASS", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) # no opened tag self.assertEqual( "PASS", LineData(None, "password=PASS", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) # example to filter or drop self.assertEqual( "", LineData(None, "password=", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) # a case self.assertEqual( "Kdpassword=Kd", 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) def test_tag_sanitize_p(self) -> None: # code self.assertEqual( "PASS", LineData(None, 'password=PASS', 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) # anchor self.assertEqual( "PASS", LineData(None, 'password=PASS', 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) # various self.assertEqual( "PASS", LineData(None, 'password=PASS', 0, 1, "", "", "", re.compile(r".*(?Ppassword)(?P=)(?P.+)")).value) ================================================ FILE: tests/data/__init__.py ================================================ from typing import Dict, Any, List from tests import SAMPLES_POST_CRED_COUNT, SAMPLES_IN_DEEP_3, SAMPLES_FILTERED_COUNT, SAMPLES_IN_DOC, \ ZERO_ML_THRESHOLD, SAMPLES_REGEX_COUNT DATA_TEST_CFG: List[Dict[str, Any]] = [{ "__cred_count": SAMPLES_IN_DOC, "pool_count": 1, "thrifty": False, "sort_output": True, "subtext": True, "json_filename": "doc.json", "doc": True, "ml_threshold": ZERO_ML_THRESHOLD }, { "__cred_count": SAMPLES_REGEX_COUNT, "pool_count": 1, "thrifty": True, "sort_output": True, "json_filename": "no_filters_no_ml.json", "use_filters": False, "ml_threshold": 0 }, { "__cred_count": SAMPLES_FILTERED_COUNT, "pool_count": 1, "thrifty": True, "sort_output": True, "json_filename": "no_ml.json", "ml_threshold": ZERO_ML_THRESHOLD }, { "__cred_count": SAMPLES_POST_CRED_COUNT, "pool_count": 2, "thrifty": True, "sort_output": True, "json_filename": "output.json" }, { "__cred_count": SAMPLES_IN_DEEP_3 + 19, "pool_count": 2, "thrifty": True, "sort_output": True, "json_filename": "depth_3_pedantic.json", "pedantic": True, "depth": 3 }] ================================================ FILE: tests/data/depth_3_pedantic.json ================================================ [ { "rule": "1Password Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "line_num": 1, "path": "./tests/samples/1password", "info": "FILE:./tests/samples/1password|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "value_start": 0, "value_end": 656, "entropy": 5.94326 } ] }, { "rule": "BASE64 encoded PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==", "line_num": 1, "path": "./tests/samples/LS0t_p", "info": "FILE:./tests/samples/LS0t_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg", "value_start": 0, "value_end": 3078, "entropy": 5.49785 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " -----BEGIN EC PRIVATE KEY-----", "line_num": 22, "path": "./tests/samples/LS0t_p", "info": "FILE:./tests/samples/LS0t_p|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 8, "value_end": 38, "entropy": 3.30775 }, { "line": " MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9", "line_num": 23, "path": "./tests/samples/LS0t_p", "info": "FILE:./tests/samples/LS0t_p|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9", "value_start": 8, "value_end": 72, "entropy": 4.54632 }, { "line": " odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72", "line_num": 24, "path": "./tests/samples/LS0t_p", "info": "FILE:./tests/samples/LS0t_p|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72", "value_start": 8, "value_end": 72, "entropy": 3.63842 }, { "line": " dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==", "line_num": 25, "path": "./tests/samples/LS0t_p", "info": "FILE:./tests/samples/LS0t_p|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==", "value_start": 8, "value_end": 44, "entropy": 3.62593 }, { "line": " -----END EC PRIVATE KEY-----", "line_num": 26, "path": "./tests/samples/LS0t_p", "info": "FILE:./tests/samples/LS0t_p|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END EC PRIVATE KEY-----", "value_start": 8, "value_end": 36, "entropy": 3.16542 } ] }, { "rule": "PKCS without password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kULftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZvyQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8iIAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K/ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvXLFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ", "line_num": 0, "path": "./tests/samples/Sample.class", "info": "FILE:./tests/samples/Sample.class|Java.65.0|STRING:21|BASE64|PKCS_PASSWORD:None", "variable": null, "variable_start": -2, "variable_end": -2, "value": "None", "value_start": -2, "value_end": -2, "entropy": 2.0 } ] }, { "rule": "PKCS with password 'changeme'", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIT0gWHcAV1rACAggAMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBaZ0qE6fJsz9rDPoa2esruBIIBYF9QvKgDLA15MgXR8P73DRdrDJzEEoYe7bDtk+vnTzy6DNVwSfkgQLNLpKfnjPO3b1szG5md06Fai6Tuuc9kKDhaCWfGgw/xAeb4OEjWupyCUvmyWYBNqCC+DDQZb7ccka4cuIRV7Ty0I/3AdGCZ/g4mDBozjtfLkLOvWzRuKXQYvGlPYd0HUWupKn2SgduyrwKt43zq0j+t9UXMMFVYv7RZOzZruVcUkBKHoYDkgOl9OQ5tGE+atfhLZUVUKj4Q7F+o6mlTy0JHxv94oUadDXJCyzivdes2RxabPDJ+1gEfNW8ZRZtselC+Pdy+KBItLn3f3FEWXpWbNPRzhElOUUaNgRNOQrmxoE09QxWLt8L3soArRfWe732Nw7N9izpUuKmL72bzbpetDQu/sn49CEnWcFGCZQ9inSiEogF0e2ncxnKfthRKzpT3K5JGiqcMmbcMoz5WjLks//PgWcZ/l2o=", "line_num": 0, "path": "./tests/samples/Sample.class", "info": "FILE:./tests/samples/Sample.class|Java.65.0|STRING:25|BASE64|PKCS_PASSWORD:b'changeme'", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b'changeme'", "value_start": -2, "value_end": -2, "entropy": 3.0958 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kULftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZvyQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8iIAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K/ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvXLFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ", "line_num": 1, "path": "./tests/samples/Sample.class", "info": "FILE:./tests/samples/Sample.class|Java.65.0|STRING:21|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kULftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZvyQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8iIAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K/ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvXLFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ", "value_start": 0, "value_end": 424, "entropy": 5.85007 } ] }, { "rule": "Akamai Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "line_num": 1, "path": "./tests/samples/akamai", "info": "FILE:./tests/samples/akamai|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "value_start": 3, "value_end": 41, "entropy": 4.15557 } ] }, { "rule": "Anthropic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "line_num": 1, "path": "./tests/samples/antrhropic", "info": "FILE:./tests/samples/antrhropic|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "value_start": 0, "value_end": 107, "entropy": 5.42952 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_api = \"DvMB_glvwjlEQ_uqIyn8k\";", "line_num": 1, "path": "./tests/samples/api.toml", "info": "FILE:./tests/samples/api.toml|RAW", "variable": "gi_reo_gi_api", "variable_start": 0, "variable_end": 13, "value": "DvMB_glvwjlEQ_uqIyn8k", "value_start": 17, "value_end": 38, "entropy": 4.1066 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "entropy": 5.77034 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "line_num": 2, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "value_start": 20, "value_end": 213, "entropy": 5.78724 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "line_num": 3, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "value_start": 22, "value_end": 216, "entropy": 5.76529 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "line_num": 4, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "value_start": 24, "value_end": 218, "entropy": 5.76679 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"kerberos_authentication\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\"", "line_num": 1, "path": "./tests/samples/auth.hs", "info": "FILE:./tests/samples/auth.hs|RAW", "variable": "kerberos_authentication", "variable_start": 1, "variable_end": 24, "value": "YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA", "value_start": 28, "value_end": 66, "entropy": 4.27373 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"authorization\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\"", "line_num": 2, "path": "./tests/samples/auth.hs", "info": "FILE:./tests/samples/auth.hs|RAW", "variable": "authorization", "variable_start": 1, "variable_end": 14, "value": "aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA", "value_start": 18, "value_end": 56, "entropy": 4.52399 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "headers = {authorization: /oauth_signature=\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\"/, content_type: 'application/json; charset=utf-8'}", "line_num": 3, "path": "./tests/samples/auth.hs", "info": "FILE:./tests/samples/auth.hs|RAW", "variable": "oauth_signature", "variable_start": 27, "variable_end": 42, "value": "JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D", "value_start": 44, "value_end": 76, "entropy": 4.53891 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "FILE:./tests/samples/auth.hs|RAW", "variable": "Authorization", "variable_start": 0, "variable_end": 13, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "FILE:./tests/samples/auth.hs|RAW", "variable": "NTLM", "variable_start": 15, "variable_end": 19, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "FILE:./tests/samples/auth_n.template|RAW", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Basic Authorization", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "FILE:./tests/samples/auth_n.template|RAW", "variable": "Basic", "variable_start": 24, "variable_end": 29, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "FILE:./tests/samples/auth_n.template|RAW", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "FILE:./tests/samples/auth_n.template|RAW", "variable": "Bearer", "variable_start": 24, "variable_end": 30, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A3T1DJ4IS97DLLTH2SZ3", "value_start": 56, "value_end": 76, "entropy": 3.82193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 14, "value_end": 34, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY45X", "value_start": 35, "value_end": 55, "entropy": 3.54644 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "line_num": 8, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "value_start": 0, "value_end": 48, "entropy": 4.88684 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "line_num": 9, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "value_start": 0, "value_end": 128, "entropy": 5.61388 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY123\",", "line_num": 3, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY323", "value_start": 191, "value_end": 211, "entropy": 3.44644 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "X-Amz-Credential", "variable_start": 174, "variable_end": 190, "value": "AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy", "value_start": 191, "value_end": 251, "entropy": 4.6314 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "X-Amz-Key", "variable_start": 252, "variable_end": 261, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI", "value_start": 262, "value_end": 313, "entropy": 4.96135 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gireogi323.s3.amazonaws.com", "value_start": 32, "value_end": 59, "entropy": 3.75416 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY321\"", "line_num": 53, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 }, { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "AccessKeyId", "variable_start": 5, "variable_end": 16, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"Token\" : \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 9, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "Token", "variable_start": 5, "variable_end": 10, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 15, "value_end": 66, "entropy": 4.96135 } ] }, { "rule": "AWS MWS Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "FILE:./tests/samples/aws_mws_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"url\" : \"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\"}", "line_num": 1, "path": "./tests/samples/aws_s3_bucket", "info": "FILE:./tests/samples/aws_s3_bucket|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "circle-production-action-output.s3.amazonaws.com", "value_start": 18, "value_end": 66, "entropy": 4.02467 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "Azure Storage Account Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "line_num": 5, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "value_start": 2, "value_end": 90, "entropy": 4.22483 } ] }, { "rule": "Azure Secret Value", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "client_srt = \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\";", "line_num": 1, "path": "./tests/samples/azure_secret_value", "info": "FILE:./tests/samples/azure_secret_value|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "value_start": 14, "value_end": 54, "entropy": 4.75306 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret = 'we5345d0f3da48544z1t1e275y05i161x995q485'", "line_num": 1, "path": "./tests/samples/binary.yml", "info": "FILE:./tests/samples/binary.yml|STRUCT|STRUCT:body|KEYWORD", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "we5345d0f3da48544z1t1e275y05i161x995q485", "value_start": 10, "value_end": 50, "entropy": 4.0404 } ] }, { "rule": "Bitbucket HTTP Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"bitbucket\" : \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\"", "line_num": 1, "path": "./tests/samples/bitbuckert_http_access_token", "info": "FILE:./tests/samples/bitbuckert_http_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l", "value_start": 15, "value_end": 64, "entropy": 4.94084 } ] }, { "rule": "Bitbucket App Password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "line_num": 1, "path": "./tests/samples/bitbucket_app_password", "info": "FILE:./tests/samples/bitbucket_app_password|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "value_start": 11, "value_end": 47, "entropy": 4.5934 } ] }, { "rule": "Bitbucket Repository Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "FILE:./tests/samples/bitbucket_repository_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "FILE:./tests/samples/bitbucket_repository_access_token|RAW", "variable": "Bitbucket Repository Access Token", "variable_start": 1, "variable_end": 34, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Brevo API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/brevo", "info": "FILE:./tests/samples/brevo|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 89, "entropy": 4.64688 } ] }, { "rule": "JKS sensitive data with password 'changeit'", "severity": "low", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "'changeit'", "line_num": 0, "path": "./tests/samples/changeit_crt.jks", "info": "FILE:./tests/samples/changeit_crt.jks|JKS:sensitive data", "variable": null, "variable_start": -2, "variable_end": -2, "value": "'changeit'", "value_start": 0, "value_end": 10, "entropy": 3.12193 } ] }, { "rule": "JKS private key with password 'changeme'", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "'changeme'", "line_num": 0, "path": "./tests/samples/changeme_key.jks", "info": "FILE:./tests/samples/changeme_key.jks|JKS:default password", "variable": null, "variable_start": -2, "variable_end": -2, "value": "'changeme'", "value_start": 0, "value_end": 10, "entropy": 2.92193 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg", "line_num": 1, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "passphrase", "variable_start": 16, "variable_end": 26, "value": "N1DdkUD3E73", "value_start": 27, "value_end": 38, "entropy": 3.0958 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "mysql -u root --password Sne3sd8AZjq", "line_num": 2, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "Sne3sd8AZjq", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Domain 'localhost' -Password 'Sjdn43ss@!'", "line_num": 3, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "Password", "variable_start": 21, "variable_end": 29, "value": "Sjdn43ss@!", "value_start": 31, "value_end": 41, "entropy": 3.12193 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " --oauth2-bearer \"eZs2fjkjD8hUcsQ37b8zHig==\" \\", "line_num": 7, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "oauth2-bearer", "variable_start": 6, "variable_end": 19, "value": "eZs2fjkjD8hUcsQ37b8zHig==", "value_start": 21, "value_end": 46, "entropy": 4.32386 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 0.918, "line_data_list": [ { "line": "ConvertTo-SecureString -String -Force dsjUE#$gds8s", "line_num": 1, "path": "./tests/samples/cmd_secure_string", "info": "FILE:./tests/samples/cmd_secure_string|RAW", "variable": "ConvertTo-SecureString -String -Force", "variable_start": 0, "variable_end": 37, "value": "dsjUE#$gds8s", "value_start": 38, "value_end": 50, "entropy": 3.02206 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"ConvertTo-SecureString \\\"4yd21JKH~GE8dkd\\\"\"", "line_num": 2, "path": "./tests/samples/cmd_secure_string", "info": "FILE:./tests/samples/cmd_secure_string|RAW", "variable": "ConvertTo-SecureString", "variable_start": 1, "variable_end": 23, "value": "4yd21JKH~GE8dkd", "value_start": 26, "value_end": 41, "entropy": 3.5899 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIIBOgIBAAJBANBuGz7s5cJDdOdH8r1txs2nYc8UAmdamTAJTG3dO0wMdxez2lhq", "line_num": 2, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBOgIBAAJBANBuGz7s5cJDdOdH8r1txs2nYc8UAmdamTAJTG3dO0wMdxez2lhq", "value_start": 0, "value_end": 64, "entropy": 4.97681 }, { "line": "fw4C9KdewnmPHcTA21nMb9FFY+CF1fmEXrkCAwEAAQJBALUm/YczXn35IyHg5pi9", "line_num": 3, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "fw4C9KdewnmPHcTA21nMb9FFY+CF1fmEXrkCAwEAAQJBALUm/YczXn35IyHg5pi9", "value_start": 0, "value_end": 64, "entropy": 5.12283 }, { "line": "UIxtbhUMzwoFNB8L9eGG5oKwv0Iinu5nLKfmql68MxGK/SZAAgS7XYng6ltOGE6s", "line_num": 4, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UIxtbhUMzwoFNB8L9eGG5oKwv0Iinu5nLKfmql68MxGK/SZAAgS7XYng6ltOGE6s", "value_start": 0, "value_end": 64, "entropy": 5.21461 }, { "line": "ygECIQD/Ztsqirk1dZqzeSbYu1vny5JrE2ViXwdxfi+4oI0z8wIhANDrFc43hEtA", "line_num": 5, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ygECIQD/Ztsqirk1dZqzeSbYu1vny5JrE2ViXwdxfi+4oI0z8wIhANDrFc43hEtA", "value_start": 0, "value_end": 64, "entropy": 5.32782 }, { "line": "4LGfqb0Y0MWSgaxe3R5kutXsubGkBEmjAiBB/Cz7nMOlEDFb1R04OY/RH0NA7s3u", "line_num": 6, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4LGfqb0Y0MWSgaxe3R5kutXsubGkBEmjAiBB/Cz7nMOlEDFb1R04OY/RH0NA7s3u", "value_start": 0, "value_end": 64, "entropy": 5.20282 }, { "line": "0GZ36AYkSTayCQIgC5ZucDCuGspvbAqyDHX65mp43MmqNAxcPI9TwWGah0cCIEIg", "line_num": 7, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0GZ36AYkSTayCQIgC5ZucDCuGspvbAqyDHX65mp43MmqNAxcPI9TwWGah0cCIEIg", "value_start": 0, "value_end": 64, "entropy": 5.08961 }, { "line": "u6wHL0fvuMNeBU98T5lJvlleaFbQoex2JS8YUk1A", "line_num": 8, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "u6wHL0fvuMNeBU98T5lJvlleaFbQoex2JS8YUk1A", "value_start": 0, "value_end": 40, "entropy": 4.83418 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 9, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "+TOKEN=ghp_00000000000000000000000000000004WZ4EQ", "line_num": 7, "path": "./tests/samples/cred-samples-1.0-1.noarch.rpm", "info": "FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/github.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ghp_00000000000000000000000000000004WZ4EQ", "value_start": 7, "value_end": 48, "entropy": 1.56292 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gi_reo_gi_credential = \"K2u6mFw8wJOsAf\"", "line_num": 1, "path": "./tests/samples/credential.hs", "info": "FILE:./tests/samples/credential.hs|RAW", "variable": "gi_reo_gi_credential", "variable_start": 0, "variable_end": 20, "value": "K2u6mFw8wJOsAf", "value_start": 24, "value_end": 38, "entropy": 3.6645 } ] }, { "rule": "CURL User Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -X PUT -u \"admin:dG9rZW4g\" https://127.0.0.1 # TP", "line_num": 1, "path": "./tests/samples/curl_user_password", "info": "FILE:./tests/samples/curl_user_password|RAW", "variable": "curl", "variable_start": 0, "variable_end": 4, "value": "dG9rZW4g", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DeepSeek API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": ">>>\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\u001b[0m<<<", "line_num": 1, "path": "./tests/samples/deepseek", "info": "FILE:./tests/samples/deepseek|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-615ef152bf865a131f88b23571dc4ee6", "value_start": 8, "value_end": 43, "entropy": 3.85416 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';", "line_num": 1, "path": "./tests/samples/digital_ocean_oauth_access_token", "info": "FILE:./tests/samples/digital_ocean_oauth_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c", "value_start": 14, "value_end": 85, "entropy": 4.05874 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 1, "path": "./tests/samples/digital_ocean_pat", "info": "FILE:./tests/samples/digital_ocean_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 0, "value_end": 71, "entropy": 3.6568 } ] }, { "rule": "Discord Bot Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "line_num": 1, "path": "./tests/samples/discord_bot_token", "info": "FILE:./tests/samples/discord_bot_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "value_start": 0, "value_end": 72, "entropy": 5.16257 } ] }, { "rule": "Discord Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "line_num": 1, "path": "./tests/samples/discord_webhook", "info": "FILE:./tests/samples/discord_webhook|RAW", "variable": "discordapp.com/api/webhooks", "variable_start": 10, "variable_end": 37, "value": "/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "value_start": 37, "value_end": 125, "entropy": 5.23454 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"UserKeyword\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\"", "line_num": 5, "path": "./tests/samples/doc_credentials_n", "info": "FILE:./tests/samples/doc_credentials_n|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1328E04-88B6-4E2A-A5C0-A4D9B21754C4", "value_start": 16, "value_end": 52, "entropy": 3.8055 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "line_num": 2, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "value_start": 17, "value_end": 46, "entropy": 4.21126 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "password:!Dd5G4s9", "line_num": 3, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "!Dd5G4s9", "value_start": 9, "value_end": 17, "entropy": 3.0 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "line_num": 4, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "LONG_CREDENTIAL", "variable_start": 0, "variable_end": 15, "value": "AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "value_start": 17, "value_end": 5485, "entropy": 5.99409 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "if SECRET := getenv(\"CEKPET\", \"GEHEIMN1S\"):", "line_num": 1, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": "SECRET", "variable_start": 3, "variable_end": 9, "value": "GEHEIMN1S", "value_start": 31, "value_end": 40, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "PASSWORD = os.environ.get(\"PASSWORD\") or \"at5G6zi!m\"", "line_num": 5, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": "PASSWORD", "variable_start": 0, "variable_end": 8, "value": "at5G6zi!m", "value_start": 42, "value_end": 51, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.966, "line_data_list": [ { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.971, "line_data_list": [ { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr11Gg!", "value_start": 13, "value_end": 23, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr12Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr13Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr14Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.977, "line_data_list": [ { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr15Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr16Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr17Gg!", "value_start": 21, "value_end": 31, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr19Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.986, "line_data_list": [ { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 16, "variable_end": 19, "value": "dipPr110Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr111Gg!", "value_start": 22, "value_end": 33, "entropy": 3.02717 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.965, "line_data_list": [ { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr112Gg!", "value_start": 14, "value_end": 25, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr114Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr115Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr116Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr117Gg!", "value_start": 26, "value_end": 37, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr118Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr119Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "dipPr120Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr121Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "id:master pass:dipPr122Gg!", "line_num": 23, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr122Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr124Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr125Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr126Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user master --password dipPr127Gg!", "line_num": 28, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr127Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 34, "variable_end": 42, "value": "dipPr128Gg!", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr129Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr130Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Pwd", "variable_start": 18, "variable_end": 21, "value": "dipPr131Gg!", "value_start": 22, "value_end": 33, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 13, "variable_end": 21, "value": "dipPr132Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 18, "variable_end": 26, "value": "dipPr133Gg!", "value_start": 27, "value_end": 38, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr134Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr135Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 17, "variable_end": 25, "value": "dipPr136Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--username master --password dipPr137Gg!", "line_num": 38, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr137Gg!", "value_start": 29, "value_end": 40, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANYpassword", "variable_start": 16, "variable_end": 27, "value": "dipPr138Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANYpassword", "variable_start": 19, "variable_end": 30, "value": "dipPr139Gg!", "value_start": 31, "value_end": 42, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr140Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "ID:master/PASS:dipPr141Gg!", "line_num": 42, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PASS", "variable_start": 10, "variable_end": 14, "value": "dipPr141Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 15, "variable_end": 21, "value": "dipPr142Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr143Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user=master,pass=dipPr144Gg!", "line_num": 45, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr144Gg!", "value_start": 17, "value_end": 28, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "dipPr145Gg!", "value_start": 9, "value_end": 20, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr146Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:master,pass:dipPr147Gg!", "line_num": 48, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr147Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 10, "variable_end": 12, "value": "dipPr148Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 23, "variable_end": 25, "value": "dipPr149Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr151Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr152Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 19, "variable_end": 27, "value": "dipPr154Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr155Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYuser=master ANY_pass=dipPr156Gg!", "line_num": 57, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_pass", "variable_start": 15, "variable_end": 23, "value": "dipPr156Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr157Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr158Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 20, "variable_end": 32, "value": "dipPr159Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 19, "variable_end": 31, "value": "dipPr160Gg!", "value_start": 32, "value_end": 43, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANY_USER=master ANY_PASS=dipPr161Gg!", "line_num": 62, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_PASS", "variable_start": 16, "variable_end": 24, "value": "dipPr161Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 25, "variable_end": 33, "value": "dipPr162Gg!", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 34, "variable_end": 37, "value": "dipPr163Gg!", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr164Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY-password", "variable_start": 20, "variable_end": 32, "value": "dipPr165Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "username:master pass:dipPr166Gg!", "line_num": 67, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 16, "variable_end": 20, "value": "dipPr166Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr168Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.981, "line_data_list": [ { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "dipPr169Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "user:master pass:dipPr172Gg!", "line_num": 73, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr172Gg!", "value_start": 17, "value_end": 28, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr174Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr175Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr176Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "dipPr177Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 10, "variable_end": 18, "value": "dipPr178Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr179Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Loging:master Password:dipPr180Gg!", "line_num": 81, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 14, "variable_end": 22, "value": "dipPr180Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Loging:master Pwd:dipPr181Gg!", "line_num": 82, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Pwd", "variable_start": 14, "variable_end": 17, "value": "dipPr181Gg!", "value_start": 18, "value_end": 29, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 18, "variable_end": 20, "value": "dipPr182Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr185Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr186Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr188Gg!", "value_start": 19, "value_end": 30, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr189Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.947, "line_data_list": [ { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "dipPr190Gg!", "value_start": 3, "value_end": 14, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr194Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "dipPr197Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "dipPr198Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.941, "line_data_list": [ { "line": "id:master@example.com,pw:IHQSB1GG!", "line_num": 102, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "IHQSB1GG!", "value_start": 25, "value_end": 34, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.882, "line_data_list": [ { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 22, "variable_end": 24, "value": "iPp10@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.651, "line_data_list": [ { "line": "ID/Password=master/iPp27@GRq", "line_num": 28, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp27@GRq", "value_start": 12, "value_end": 28, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "Password:Prl23Db#@", "line_num": 1, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "pw:Prl23Db#@", "line_num": 3, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "pw", "variable_start": 0, "variable_end": 2, "value": "Prl23Db#@", "value_start": 3, "value_end": 12, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "Password=Prl23Db#@", "line_num": 4, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "pwd:Prl23Db#@", "line_num": 5, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "Prl23Db#@", "value_start": 4, "value_end": 13, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password=Prl23Db#@", "line_num": 8, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "pass:Prl23Db#@", "line_num": 10, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "pass", "variable_start": 0, "variable_end": 4, "value": "Prl23Db#@", "value_start": 5, "value_end": 14, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY-password=Prl23Db#@", "line_num": 11, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "ANY-password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32 password:Prl23Db#@", "line_num": 14, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 19, "variable_end": 27, "value": "Prl23Db#@", "value_start": 28, "value_end": 37, "entropy": 3.16993 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "--Password Prl23Db#@", "line_num": 15, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "Password", "variable_start": 2, "variable_end": 10, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "ANY_PW:Prl23Db#@", "line_num": 17, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "ANY_PW", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "default password:Prl23Db#@", "line_num": 18, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "Prl23Db#@", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"password\":\"Prl23Db#@\"", "line_num": 21, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 1, "variable_end": 9, "value": "Prl23Db#@", "value_start": 12, "value_end": 21, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "Passwd:Prl23Db#@ Prl23Db#@", "line_num": 23, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "Passwd", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "PW:Prl23Db#@,password:Prl23Db#@", "line_num": 24, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "Prl23Db#@", "value_start": 22, "value_end": 31, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password:Prl23Db#@,\ube44\ubc88:Prl23Db#@", "line_num": 25, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "passwd=Prl23Db#@", "line_num": 26, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "passwd", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "password:Prl23Db#@, paasword:Prl23Db#@", "line_num": 30, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", "line_num": 31, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", "line_num": 31, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "ANYPassword", "variable_start": 19, "variable_end": 30, "value": "Prl23Db#@", "value_start": 31, "value_end": 40, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "Password:Prl23Db#@,pwd=Prl23Db#@", "line_num": 32, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.926, "line_data_list": [ { "line": "Password:Prl23Db#@,pwd=Prl23Db#@", "line_num": 32, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "pwd", "variable_start": 19, "variable_end": 22, "value": "Prl23Db#@", "value_start": 23, "value_end": 32, "entropy": 3.16993 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-password \"Prl23Db#@\"", "line_num": 33, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 1, "variable_end": 9, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password:Prl23Db#@", "line_num": 34, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "--password=Prl23Db#@", "line_num": 37, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 2, "variable_end": 10, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "root/Prl23Db#@,root password:Prl23Db#@", "line_num": 38, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "Prl23Db#@", "value_start": 29, "value_end": 38, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@", "line_num": 40, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "Prl23Db#@", "value_start": 48, "value_end": 57, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Prl23Db#@:password:Prl23Db#@", "line_num": 41, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "Prl23Db#@", "value_start": 19, "value_end": 28, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYpassword=Prl23Db#@", "line_num": 45, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "ANYpassword", "variable_start": 0, "variable_end": 11, "value": "Prl23Db#@", "value_start": 12, "value_end": 21, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "passwords:Prl23Db#@", "line_num": 46, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "passwords", "variable_start": 0, "variable_end": 9, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "password=>Prl23Db#@", "line_num": 48, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.984, "line_data_list": [ { "line": "# password: keep empty", "line_num": 56, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 2, "variable_end": 10, "value": "keep", "value_start": 12, "value_end": 16, "entropy": 1.5 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-Token:AIhq5Xyb1Gga9Q0", "line_num": 1, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY-Token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q0", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token:AIhq5Xyb1Gga9Q2", "line_num": 3, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "AIhq5Xyb1Gga9Q2", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "KEY", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "SECRET KEY", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret=AIhq5Xyb1Gga9Q4", "line_num": 5, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q4", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--token AIhq5Xyb1Gga9Q5", "line_num": 6, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 2, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q5", "value_start": 8, "value_end": 23, "entropy": 3.77356 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret:AIhq5Xyb1Gga9Q6", "line_num": 7, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q6", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_token=AIhq5Xyb1Gga9Q7", "line_num": 8, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q7", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-secret AIhq5Xyb1Gga9Q10", "line_num": 11, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 1, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q10", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY.secret=AIhq5Xyb1Gga9Q19", "line_num": 20, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY.secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q19", "value_start": 11, "value_end": 27, "entropy": 3.75 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--secret=AIhq5Xyb1Gga9Q21", "line_num": 22, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 2, "variable_end": 8, "value": "AIhq5Xyb1Gga9Q21", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_secret:AIhq5Xyb1Gga9Q22", "line_num": 23, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q22", "value_start": 11, "value_end": 27, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Token:AIhq5Xyb1Gga9Q23", "line_num": 24, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Token", "variable_start": 1, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q23", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "API Secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access key:AIhq5Xyb1Gga9Q26", "line_num": 27, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q26", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Secret Key", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_key=AIhq5Xyb1Gga9Q29", "line_num": 30, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_key", "variable_start": 0, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q29", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", "line_num": 32, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_token", "variable_start": 24, "variable_end": 33, "value": "AIhq5Xyb1Gga9Q31", "value_start": 34, "value_end": 50, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access_token:AIhq5Xyb1Gga9Q33", "line_num": 34, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "access_token", "variable_start": 0, "variable_end": 12, "value": "AIhq5Xyb1Gga9Q33", "value_start": 13, "value_end": 29, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 15, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Authentication key", "variable_start": 0, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 3, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.964, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", "line_num": 6, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", "line_num": 7, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 11, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 53, "variable_end": 61, "value": "IhqSb1Gg", "value_start": 62, "value_end": 70, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", "line_num": 15, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 25, "variable_end": 28, "value": "IhqSb1Gg", "value_start": 29, "value_end": 37, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32(pw:IhqSb1Gg)", "line_num": 17, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32/pw:IhqSb1Gg", "line_num": 19, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PWD", "variable_start": 43, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 22, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 42, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 23, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 37, "variable_end": 39, "value": "IhqSb1Gg", "value_start": 40, "value_end": 48, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 25, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 41, "variable_end": 49, "value": "IhqSb1Gg", "value_start": 50, "value_end": 58, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "IhqSb1Gg", "value_start": 48, "value_end": 56, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password,default:IhqSb1Gg", "line_num": 31, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANY_password,default", "variable_start": 0, "variable_end": 20, "value": "IhqSb1Gg", "value_start": 21, "value_end": 29, "entropy": 3.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Key(ANYSecret):IhqSb1Gg", "line_num": 32, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANYSecret)", "variable_start": 4, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32 ANY_PW:IhqSb1Gg", "line_num": 34, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANY_PW", "variable_start": 12, "variable_end": 18, "value": "IhqSb1Gg", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "98.76.54.32(ID/PW:IhqSb1Gg)", "line_num": 36, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "IhqSb1Gg", "value_start": 18, "value_end": 26, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", "line_num": 38, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 26, "variable_end": 29, "value": "IhqSb1Gg", "value_start": 30, "value_end": 38, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "password for master:IhqSb1Gg", "line_num": 43, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password for master", "variable_start": 0, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANYpw", "variable_start": 8, "variable_end": 13, "value": "IhqSb1Ga", "value_start": 14, "value_end": 22, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", "line_num": 47, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", "line_num": 51, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", "line_num": 56, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", "line_num": 61, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANY_pwd", "variable_start": 14, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Acount name:xxxx Initial Password:IhqSb1Gg", "line_num": 62, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Password", "variable_start": 25, "variable_end": 33, "value": "IhqSb1Gg", "value_start": 34, "value_end": 42, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Access wifi:xxxx(PW:IhqSb1Gg)", "line_num": 63, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-User:master -PasswordANY:IhqSb1Gg", "line_num": 66, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PasswordANY", "variable_start": 14, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 73, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "master@98.76.54.32,PW:IhqSb1Gg", "line_num": 74, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "98.76.54.32 pw:IhqSb1Gg", "line_num": 75, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "config:xxxx,PW:IhqSb1Gg", "line_num": 78, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 82, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 35, "variable_end": 37, "value": "IhqSb1Gg", "value_start": 38, "value_end": 46, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 84, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", "line_num": 85, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", "line_num": 87, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", "line_num": 90, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", "line_num": 93, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 94, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 37, "variable_end": 45, "value": "IhqSb1Gg", "value_start": 46, "value_end": 54, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", "line_num": 96, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Password", "variable_start": 36, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", "line_num": 97, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pass", "variable_start": 37, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 100, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", "line_num": 101, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pass", "variable_start": 40, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 35, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", "line_num": 104, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 44, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", "line_num": 106, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", "line_num": 108, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 23, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "line_num": 1, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "value_start": 10, "value_end": 46, "entropy": 4.68354 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "line_num": 2, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "value_start": 10, "value_end": 46, "entropy": 3.89106 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "line_num": 3, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "value_start": 10, "value_end": 51, "entropy": 4.78414 } ] }, { "rule": "Docker Swarm Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "line_num": 4, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "value_start": 10, "value_end": 95, "entropy": 5.06757 } ] }, { "rule": "Docker Swarm Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "line_num": 6, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "value_start": 10, "value_end": 62, "entropy": 4.95515 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "password is NsIdksKJdj\ttoken is bace4d19-fa7e-b2e4-1afe-9129474bcd81\tPassword: \"Dw7^&ndgf", "line_num": 16, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": "textpassword", "variable_start": 0, "variable_end": 12, "value": "Df34D<345&>gf", "value_start": 14, "value_end": 27, "entropy": 3.08506 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "pass: Dsfgh%$d<>s&", "line_num": 34, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": "pass", "variable_start": 0, "variable_end": 4, "value": "Dsfgh%$d<>s&", "value_start": 6, "value_end": 18, "entropy": 3.4183 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "line_num": 45, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "value_start": 16, "value_end": 52, "entropy": 3.68703 } ] }, { "rule": "Dropbox API secret (long term)", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", "line_num": 1, "path": "./tests/samples/dropbox_api_secret_long_term", "info": "FILE:./tests/samples/dropbox_api_secret_long_term|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", "value_start": 9, "value_end": 73, "entropy": 4.89362 } ] }, { "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", "line_num": 1, "path": "./tests/samples/dropbox_app_secret", "info": "FILE:./tests/samples/dropbox_app_secret|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wpv1jq9xwanbn3n", "value_start": 24, "value_end": 39, "entropy": 3.45656 } ] }, { "rule": "Dropbox OAuth2 API Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", "line_num": 1, "path": "./tests/samples/dropbox_oauth_token", "info": "FILE:./tests/samples/dropbox_oauth_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", "value_start": 15, "value_end": 153, "entropy": 5.61894 } ] }, { "rule": "Dynatrace API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, "path": "./tests/samples/dynatrace_api.hs", "info": "FILE:./tests/samples/dynatrace_api.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "value_start": 0, "value_end": 96, "entropy": 4.93241 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "FILE:./tests/samples/facebook_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.964, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "FILE:./tests/samples/facebook_key|RAW", "variable": "GI_REO_GI_FACEBOOK_TOKEN", "variable_start": 0, "variable_end": 24, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Facebook App Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "line_num": 2, "path": "./tests/samples/facebook_key", "info": "FILE:./tests/samples/facebook_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "value_start": 0, "value_end": 44, "entropy": 4.60694 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "line_num": 1, "path": "./tests/samples/figma", "info": "FILE:./tests/samples/figma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "value_start": 0, "value_end": 45, "entropy": 4.98619 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "line_num": 2, "path": "./tests/samples/figma", "info": "FILE:./tests/samples/figma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "value_start": 0, "value_end": 45, "entropy": 4.85286 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test-app-domain-42.firebaseapp.com", "line_num": 1, "path": "./tests/samples/firebase_domain", "info": "FILE:./tests/samples/firebase_domain|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test-app-domain-42.firebaseapp.com", "value_start": 0, "value_end": 34, "entropy": 3.98423 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test2.io.firebaseio.com", "line_num": 2, "path": "./tests/samples/firebase_domain", "info": "FILE:./tests/samples/firebase_domain|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test2.io.firebaseio.com", "value_start": 0, "value_end": 23, "entropy": 3.52271 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", "line_num": 1, "path": "./tests/samples/github_classic_token", "info": "FILE:./tests/samples/github_classic_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ghp_00000000000000000000000000000004WZ4EQ", "value_start": 0, "value_end": 41, "entropy": 1.56292 } ] }, { "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/github_fine_granted_token", "info": "FILE:./tests/samples/github_fine_granted_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 93, "entropy": 5.41519 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token", "line_num": 2, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP", "value_start": 0, "value_end": 39, "entropy": 4.59259 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret", "line_num": 3, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc", "value_start": 0, "value_end": 70, "entropy": 4.0466 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token", "line_num": 4, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gldt-9BeUoeWu2V9uUS3uLoMy", "value_start": 0, "value_end": 25, "entropy": 4.13366 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token", "line_num": 5, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrt-2CR8_eVxiio-1QmzPZwa", "value_start": 0, "value_end": 25, "entropy": 4.48386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "line_num": 6, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "value_start": 0, "value_end": 31, "entropy": 4.54275 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token", "line_num": 7, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL", "value_start": 0, "value_end": 28, "entropy": 4.42325 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token", "line_num": 8, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", "value_start": 0, "value_end": 46, "entropy": 3.96956 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glft-Aafqn5A31G-2VipZMh28 # Feed token", "line_num": 9, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glft-Aafqn5A31G-2VipZMh28", "value_start": 0, "value_end": 25, "entropy": 4.32386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token", "line_num": 10, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glimt-1jpqzsnw2n71om0r9kgt06os3", "value_start": 0, "value_end": 31, "entropy": 4.43807 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token", "line_num": 11, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg", "value_start": 0, "value_end": 58, "entropy": 5.18979 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies", "line_num": 12, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2", "value_start": 0, "value_end": 48, "entropy": 4.32185 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsoat-971om0ecn5A386r9k481 # SCIM Tokens", "line_num": 13, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsoat-971om0ecn5A386r9k481", "value_start": 0, "value_end": 27, "entropy": 4.45859 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token", "line_num": 14, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glffct-AnRWYdo3Si_Xm2Q6n7zu", "value_start": 0, "value_end": 27, "entropy": 4.60674 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token", "line_num": 15, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr", "value_start": 0, "value_end": 47, "entropy": 5.18204 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token", "line_num": 16, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ", "value_start": 0, "value_end": 38, "entropy": 4.70175 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token", "line_num": 18, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", "value_start": 0, "value_end": 29, "entropy": 4.58212 } ] }, { "rule": "Google API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key", "line_num": 1, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315", "value_start": 0, "value_end": 39, "entropy": 4.35298 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # Google OAuth Secret", "line_num": 2, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 35, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token", "line_num": 3, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S", "value_start": 0, "value_end": 51, "entropy": 5.01537 } ] }, { "rule": "Google OAuth Refresh Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token", "line_num": 4, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_", "value_start": 0, "value_end": 102, "entropy": 5.43821 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "line_num": 2, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "value_start": 0, "value_end": 72, "entropy": 4.80827 }, { "line": "4L2QMyTm6Rr0o46ytGiReoG1", "line_num": 4, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4L2QMyTm6Rr0o46ytGiReoG1", "value_start": 0, "value_end": 24, "entropy": 4.08496 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", "value_start": 6, "value_end": 78, "entropy": 4.80827 }, { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Grafana Access Policy Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", "line_num": 1, "path": "./tests/samples/grafana_access_policy_token", "info": "FILE:./tests/samples/grafana_access_policy_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", "value_start": 18, "value_end": 130, "entropy": 5.15841 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", "line_num": 1, "path": "./tests/samples/grafana_provisioned_api_key", "info": "FILE:./tests/samples/grafana_provisioned_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", "value_start": 11, "value_end": 107, "entropy": 3.81531 } ] }, { "rule": "Grafana Service Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "line_num": 1, "path": "./tests/samples/grafana_service_accounts", "info": "FILE:./tests/samples/grafana_service_accounts|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, "value_end": 46, "entropy": 4.71879 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/groq_api_key", "info": "FILE:./tests/samples/groq_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.01691 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/groq_api_key", "info": "FILE:./tests/samples/groq_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 3, "path": "./tests/samples/groq_api_key", "info": "FILE:./tests/samples/groq_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Hashicorp Terraform Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 1, "path": "./tests/samples/hashicorp", "info": "FILE:./tests/samples/hashicorp|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 90, "entropy": 5.47059 } ] }, { "rule": "Hashicorp Vault Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 2, "path": "./tests/samples/hashicorp", "info": "FILE:./tests/samples/hashicorp|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 94, "entropy": 5.53423 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "line_num": 1, "path": "./tests/samples/heroku", "info": "FILE:./tests/samples/heroku|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "value_start": 0, "value_end": 65, "entropy": 5.32822 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "line_num": 2, "path": "./tests/samples/heroku", "info": "FILE:./tests/samples/heroku|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "value_start": 0, "value_end": 41, "entropy": 4.0555 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/huggingface", "info": "FILE:./tests/samples/huggingface|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.70256 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "url/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/part", "line_num": 2, "path": "./tests/samples/huggingface", "info": "FILE:./tests/samples/huggingface|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 4, "value_end": 41, "entropy": 4.77702 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "line_num": 6, "path": "./tests/samples/huggingface", "info": "FILE:./tests/samples/huggingface|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "value_start": 0, "value_end": 37, "entropy": 4.62811 } ] }, { "rule": "Instagram Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "line_num": 1, "path": "./tests/samples/instagram_access_token", "info": "FILE:./tests/samples/instagram_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, "value_end": 162, "entropy": 5.23164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/iso_ir_111.patch", "info": "FILE:./tests/samples/iso_ir_111.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "line_num": 1, "path": "./tests/samples/jfrog_p", "info": "FILE:./tests/samples/jfrog_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "value_start": 0, "value_end": 64, "entropy": 5.28891 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "line_num": 2, "path": "./tests/samples/jfrog_p", "info": "FILE:./tests/samples/jfrog_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "value_start": 0, "value_end": 73, "entropy": 5.35394 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "line_num": 1, "path": "./tests/samples/jira_confluence_pat", "info": "FILE:./tests/samples/jira_confluence_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 63, "value_end": 107, "entropy": 4.60694 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: \"image/png\": \"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\n\",", "line_num": 2, "path": "./tests/samples/jira_confluence_pat", "info": "FILE:./tests/samples/jira_confluence_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 67, "value_end": 111, "entropy": 4.60694 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=", "line_num": 1, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0", "value_start": 0, "value_end": 407, "entropy": 5.27189 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"EC\",", "line_num": 3, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|BASE64|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"EC\"", "value_start": 8, "value_end": 19, "entropy": 2.73216 }, { "line": " \"d\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\"", "line_num": 4, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|BASE64|RAW", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-", "value_start": 14, "value_end": 57, "entropy": 4.87953 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"RSA\",", "line_num": 7, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|BASE64|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"RSA\"", "value_start": 8, "value_end": 20, "entropy": 2.9183 }, { "line": " \"d\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\"", "line_num": 8, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|BASE64|RAW", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY", "value_start": 14, "value_end": 100, "entropy": 5.43459 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"oct\",", "line_num": 11, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|BASE64|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"oct\"", "value_start": 8, "value_end": 20, "entropy": 2.75163 }, { "line": " \"k\": \"WrMwQfoNaHTgXU5fZvRGAD\"", "line_num": 12, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|BASE64|RAW", "variable": "k", "variable_start": 9, "variable_end": 10, "value": "WrMwQfoNaHTgXU5fZvRGAD", "value_start": 14, "value_end": 36, "entropy": 4.36852 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, "path": "./tests/samples/json_web_token", "info": "FILE:./tests/samples/json_web_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "value_start": 10, "value_end": 75, "entropy": 5.03815 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"[EC]\",", "line_num": 3, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"[EC", "value_start": 8, "value_end": 19, "entropy": 3.02717 }, { "line": " \"d\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\"", "line_num": 4, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-", "value_start": 14, "value_end": 57, "entropy": 4.87953 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"RSA\",", "line_num": 7, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"RSA\"", "value_start": 8, "value_end": 20, "entropy": 2.9183 }, { "line": " \"d\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\"", "line_num": 10, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY", "value_start": 14, "value_end": 100, "entropy": 5.43459 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"oct\",", "line_num": 13, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"oct\"", "value_start": 8, "value_end": 20, "entropy": 2.75163 }, { "line": " \"k\": \"WrMwQfoNaHTgXU5fZvRGAD\"", "line_num": 16, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "k", "variable_start": 9, "variable_end": 10, "value": "WrMwQfoNaHTgXU5fZvRGAD", "value_start": 14, "value_end": 36, "entropy": 4.36852 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 12, "value_end": 47, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 2, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 3, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 4, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 5, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 6, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "line_num": 1, "path": "./tests/samples/key.php", "info": "FILE:./tests/samples/key.php|RAW", "variable": "$key", "variable_start": 0, "variable_end": 4, "value": "gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "value_start": 8, "value_end": 64, "entropy": 4.96772 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );", "line_num": 3, "path": "./tests/samples/key.php", "info": "FILE:./tests/samples/key.php|RAW", "variable": "PASSWORD", "variable_start": 9, "variable_end": 17, "value": "2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG", "value_start": 22, "value_end": 53, "entropy": 4.63162 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.96, "line_data_list": [ { "line": "PKEY = '-----BEGIN OPENSSH PRIVATE KEY-----\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\n-----END OPENSSH PRIVATE KEY-----'", "line_num": 1, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|STRUCT|STRING:2|RAW", "variable": "PKEY", "variable_start": 0, "variable_end": 4, "value": "-----BEGIN OPENSSH PRIVATE KEY-----\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\n-----END OPENSSH PRIVATE KEY-----", "value_start": 8, "value_end": 424, "entropy": 5.55221 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "PKEY = '-----BEGIN OPENSSH PRIVATE KEY-----\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\n-----END OPENSSH PRIVATE KEY-----'", "line_num": 1, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|STRUCT|STRING:2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\n-----END OPENSSH PRIVATE KEY-----", "value_start": 8, "value_end": 424, "entropy": 5.55221 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "pkey = (\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\"", "line_num": 1, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": "pkey", "variable_start": 0, "variable_end": 4, "value": "LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn", "value_start": 9, "value_end": 71, "entropy": 4.71236 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "pkey = 'LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU=='", "line_num": 1, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|STRUCT|STRING:0|RAW", "variable": "pkey", "variable_start": 0, "variable_end": 4, "value": "LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU==", "value_start": 8, "value_end": 332, "entropy": 5.42881 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "print(\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\")", "line_num": 7, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": "key", "variable_start": 34, "variable_end": 37, "value": "dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB", "value_start": 38, "value_end": 93, "entropy": 4.96282 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "PKEY = \"\"\"-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 9, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 10, "value_end": 45, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 10, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 11, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 12, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 13, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 14, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----\"\"\"", "line_num": 15, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "api_key = 'QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF'", "line_num": 2, "path": "./tests/samples/key_value.json", "info": "FILE:./tests/samples/key_value.json|STRUCT|KEYWORD", "variable": "api_key", "variable_start": 0, "variable_end": 7, "value": "QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF", "value_start": 11, "value_end": 46, "entropy": 4.47914 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "api_key = 'QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF'", "line_num": 2, "path": "./tests/samples/key_value.json", "info": "FILE:./tests/samples/key_value.json|STRUCT|KEYWORD", "variable": "api_key", "variable_start": 0, "variable_end": 7, "value": "QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF", "value_start": 11, "value_end": 46, "entropy": 4.47914 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "line_num": 1, "path": "./tests/samples/llama", "info": "FILE:./tests/samples/llama|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "value_start": 0, "value_end": 52, "entropy": 5.03958 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "line_num": 2, "path": "./tests/samples/llama", "info": "FILE:./tests/samples/llama|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "value_start": 0, "value_end": 52, "entropy": 5.05602 } ] }, { "rule": "MailChimp API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "mailchimp = \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\"", "line_num": 1, "path": "./tests/samples/mailchimp_key", "info": "FILE:./tests/samples/mailchimp_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36", "value_start": 13, "value_end": 50, "entropy": 4.75662 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "key-a25a4ac62a074cd52c668c6b9937cf40", "line_num": 1, "path": "./tests/samples/mailgun", "info": "FILE:./tests/samples/mailgun|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "key-a25a4ac62a074cd52c668c6b9937cf40", "value_start": 0, "value_end": 36, "entropy": 3.91661 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "line_num": 2, "path": "./tests/samples/mailgun", "info": "FILE:./tests/samples/mailgun|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "value_start": 0, "value_end": 50, "entropy": 3.85669 } ] }, { "rule": "Google API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AIzaGiReoGiCrackleCrackle12315618112315\u0000", "line_num": 1, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|PATCH:google_api_key_with_null_terminator:added|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AIzaGiReoGiCrackleCrackle12315618112315", "value_start": 0, "value_end": 39, "entropy": 4.13105 } ] }, { "rule": "Google API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AIzaGiReoGiCrackleCrackle12315618112315\u0000", "line_num": 1, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|PATCH:google_api_key_with_null_terminator:deleted|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AIzaGiReoGiCrackleCrackle12315618112315", "value_start": 0, "value_end": 39, "entropy": 4.13105 } ] }, { "rule": "Dynatrace API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|PATCH:dynatrace_api.zip:added|ZIP:dynatrace_api|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "value_start": 0, "value_end": 96, "entropy": 4.92454 } ] }, { "rule": "Dynatrace API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|PATCH:dynatrace_api.zip:deleted|ZIP:dynatrace_api|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "value_start": 0, "value_end": 96, "entropy": 4.92454 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Netlify Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "line_num": 1, "path": "./tests/samples/netlify", "info": "FILE:./tests/samples/netlify|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "value_start": 0, "value_end": 40, "entropy": 4.61531 } ] }, { "rule": "NKEY Seed", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "line_num": 2, "path": "./tests/samples/nkey_seed", "info": "FILE:./tests/samples/nkey_seed|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "value_start": 3, "value_end": 61, "entropy": 4.55826 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_multi = 'KJHfdjs8767gr54534wsFHGf5hJKhK\\nU7yguyuyFHGf5=='", "line_num": 1, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|STRUCT|STRING:3|RAW", "variable": "key_multi", "variable_start": 0, "variable_end": 9, "value": "KJHfdjs8767gr54534wsFHGf5hJKhK\\nU7yguyuyFHGf5==", "value_start": 13, "value_end": 60, "entropy": 4.49556 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYTfdjs8Gf5jlli=='", "line_num": 1, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|STRUCT|STRING:2|RAW", "variable": "key_wrap", "variable_start": 0, "variable_end": 8, "value": "KJHhJKhKU7yguyuyfrtsdESffhjgkhYTfdjs8Gf5jlli==", "value_start": 12, "value_end": 58, "entropy": 4.48282 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'", "line_num": 1, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "nonce", "variable_start": 0, "variable_end": 5, "value": "bsfcvir57nt40rydvtbhs8lzbgljmet5", "value_start": 9, "value_end": 41, "entropy": 4.39032 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password: F1lT3ReDw17hQoT3s", "line_num": 3, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "F1lT3ReDw17hQoT3s", "value_start": 10, "value_end": 27, "entropy": 3.73452 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\", "line_num": 7, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "key_wrap", "variable_start": 0, "variable_end": 8, "value": "KJHhJKhKU7yguyuyfrtsdESffhjgkhYT", "value_start": 12, "value_end": 44, "entropy": 4.11673 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK", "line_num": 11, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "key_multi", "variable_start": 0, "variable_end": 9, "value": "KJHfdjs8767gr54534wsFHGf5hJKhK", "value_start": 15, "value_end": 45, "entropy": 4.12323 } ] }, { "rule": "Notion Integration Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "line_num": 1, "path": "./tests/samples/notion", "info": "FILE:./tests/samples/notion|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "value_start": 0, "value_end": 50, "entropy": 5.06876 } ] }, { "rule": "NPM Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "positive: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", "line_num": 2, "path": "./tests/samples/npm", "info": "FILE:./tests/samples/npm|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 9, "value_end": 49, "entropy": 4.80306 } ] }, { "rule": "NTLM Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "line_num": 1, "path": "./tests/samples/ntlm", "info": "FILE:./tests/samples/ntlm|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "value_start": 10, "value_end": 190, "entropy": 3.79713 } ] }, { "rule": "NuGet API key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'", "line_num": 1, "path": "./tests/samples/nuget_api_key", "info": "FILE:./tests/samples/nuget_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam", "value_start": 5, "value_end": 51, "entropy": 4.56129 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/open_ai_token", "info": "FILE:./tests/samples/open_ai_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 51, "entropy": 5.22625 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "line_num": 3, "path": "./tests/samples/open_ai_token", "info": "FILE:./tests/samples/open_ai_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "value_start": 0, "value_end": 56, "entropy": 5.25816 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "line_num": 7, "path": "./tests/samples/open_ai_token", "info": "FILE:./tests/samples/open_ai_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "value_start": 0, "value_end": 56, "entropy": 4.12555 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "WXFES7QNTET5DQYC", "line_num": 1, "path": "./tests/samples/otp_2fa", "info": "FILE:./tests/samples/otp_2fa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WXFES7QNTET5DQYC", "value_start": 0, "value_end": 16, "entropy": 3.625 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "line_num": 2, "path": "./tests/samples/otp_2fa", "info": "FILE:./tests/samples/otp_2fa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "value_start": 0, "value_end": 32, "entropy": 4.14032 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "FILE:./tests/samples/passwd.groovy|RAW", "variable": "gi_reo_gi_passwd", "variable_start": 0, "variable_end": 16, "value": "cAc48k1Zd7", "value_start": 20, "value_end": 30, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "FILE:./tests/samples/passwd.groovy|RAW", "variable": "password_confirmation", "variable_start": 33, "variable_end": 54, "value": "cAc48k1Zd7", "value_start": 58, "value_end": 68, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "password = \"cackle!\"", "line_num": 1, "path": "./tests/samples/password.gradle", "info": "FILE:./tests/samples/password.gradle|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 12, "value_end": 19, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 9, "path": "./tests/samples/password.patch", "info": "FILE:./tests/samples/password.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = \"MYPSWRD!@#$%^&*\"", "line_num": 1, "path": "./tests/samples/password.tfvars", "info": "FILE:./tests/samples/password.tfvars|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "MYPSWRD!@#$%^&*", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA", "line_num": 1, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "MYSQLPASS", "variable_start": 0, "variable_end": 9, "value": "Ce7shE0ENPiBlE_EdEose0cBAA", "value_start": 11, "value_end": 37, "entropy": 3.8693 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "my_pw: nCzx8A8#!", "line_num": 2, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "my_pw", "variable_start": 0, "variable_end": 5, "value": "nCzx8A8#!", "value_start": 7, "value_end": 16, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "val password: String = \"exord13Paw64\", // scala", "line_num": 3, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "exord13Paw64", "value_start": 24, "value_end": 36, "entropy": 3.58496 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "def connect(passwd: str = \"cq2tPr1a2\"): # python default arg", "line_num": 4, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "cq2tPr1a2", "value_start": 27, "value_end": 36, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if passworsd == \"q4c1a2oPd\": # __eq__ separator", "line_num": 5, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "q4c1a2oPd", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if passworsd != \"x6s7djtEa\": # __ne__ separator", "line_num": 6, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "x6s7djtEa", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password=2bkJgtJDiLcq1t", "line_num": 7, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "2bkJgtJDiLcq1t", "value_start": 9, "value_end": 23, "entropy": 3.52164 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passin", "variable_start": 33, "variable_end": 39, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "pass", "variable_start": 41, "variable_end": 45, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;", "line_num": 12, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "MYSQL_DATABASE_PASSWORD", "variable_start": 25, "variable_end": 48, "value": "2IWJD88FH4Y", "value_start": 49, "value_end": 60, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "#define password \"n84ASM54y4\"", "line_num": 15, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%define PASSWORD \"n84ASM54y4\"", "line_num": 18, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%global PASSWORD \"n84RPM54y4\"", "line_num": 19, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84RPM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SET password \"n83.bat47Fy4\"", "line_num": 21, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "n83.bat47Fy4", "value_start": 14, "value_end": 26, "entropy": 3.4183 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"#define\\tpassword\\t\\\"n84ASM54y4\\\"\"", "line_num": 23, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "n84ASM54y4", "value_start": 22, "value_end": 32, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "line_num": 25, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "WPA2_PASSWORD", "variable_start": 0, "variable_end": 13, "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "value_start": 15, "value_end": 79, "entropy": 3.67082 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/password_utf16.patch", "info": "FILE:./tests/samples/password_utf16.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.914, "line_data_list": [ { "line": "+ \"password\": \"dkajc\u00f61\"", "line_num": 9, "path": "./tests/samples/password_western.patch", "info": "FILE:./tests/samples/password_western.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajc\u00f61", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "PayPal Braintree Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "line_num": 1, "path": "./tests/samples/paypal_key", "info": "FILE:./tests/samples/paypal_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "value_start": 0, "value_end": 73, "entropy": 4.39985 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", "line_num": 2, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 13, "value_end": 44, "entropy": 3.38229 }, { "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "line_num": 3, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "value_start": 0, "value_end": 108, "entropy": 5.52555 }, { "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "line_num": 4, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "value_start": 0, "value_end": 110, "entropy": 5.49388 }, { "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "line_num": 5, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "value_start": 0, "value_end": 106, "entropy": 5.44383 }, { "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "line_num": 6, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "value_start": 0, "value_end": 90, "entropy": 5.53586 }, { "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "line_num": 7, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "value_start": 0, "value_end": 96, "entropy": 5.46977 }, { "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "line_num": 8, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "value_start": 0, "value_end": 110, "entropy": 5.55951 }, { "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "line_num": 9, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "value_start": 0, "value_end": 112, "entropy": 5.49108 }, { "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "line_num": 10, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "value_start": 0, "value_end": 114, "entropy": 5.57587 }, { "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "line_num": 11, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "value_start": 0, "value_end": 63, "entropy": 4.72341 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", "line_num": 2, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 13, "value_end": 44, "entropy": 3.38229 }, { "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "line_num": 3, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "value_start": 0, "value_end": 108, "entropy": 5.52555 }, { "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "line_num": 4, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "value_start": 0, "value_end": 110, "entropy": 5.49388 }, { "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "line_num": 5, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "value_start": 0, "value_end": 106, "entropy": 5.44383 }, { "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "line_num": 6, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "value_start": 0, "value_end": 90, "entropy": 5.53586 }, { "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "line_num": 7, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "value_start": 0, "value_end": 96, "entropy": 5.46977 }, { "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "line_num": 8, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "value_start": 0, "value_end": 110, "entropy": 5.55951 }, { "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "line_num": 9, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "value_start": 0, "value_end": 112, "entropy": 5.49108 }, { "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "line_num": 10, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "value_start": 0, "value_end": 114, "entropy": 5.57587 }, { "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "line_num": 11, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "value_start": 0, "value_end": 63, "entropy": 4.72341 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", "line_num": 2, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 13, "value_end": 44, "entropy": 3.38229 }, { "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "line_num": 3, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "value_start": 0, "value_end": 108, "entropy": 5.52555 }, { "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "line_num": 4, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "value_start": 0, "value_end": 110, "entropy": 5.49388 }, { "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "line_num": 5, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "value_start": 0, "value_end": 106, "entropy": 5.44383 }, { "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "line_num": 6, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "value_start": 0, "value_end": 90, "entropy": 5.53586 }, { "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "line_num": 7, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "value_start": 0, "value_end": 96, "entropy": 5.46977 }, { "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "line_num": 8, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "value_start": 0, "value_end": 110, "entropy": 5.55951 }, { "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "line_num": 9, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "value_start": 0, "value_end": 112, "entropy": 5.49108 }, { "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "line_num": 10, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "value_start": 0, "value_end": 114, "entropy": 5.57587 }, { "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "line_num": 11, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "value_start": 0, "value_end": 63, "entropy": 4.72341 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", "line_num": 14, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "value_start": 16, "value_end": 262, "entropy": 5.56558 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", "line_num": 14, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "value_start": 16, "value_end": 262, "entropy": 5.56558 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", "line_num": 14, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "value_start": 16, "value_end": 262, "entropy": 5.56558 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "line_num": 27, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 47, "entropy": 3.8375 }, { "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "line_num": 28, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, "value_end": 120, "entropy": 3.30679 }, { "line": "-----END LOW ENTROPY PRIVATE KEY-----", "line_num": 29, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 37, "entropy": 3.55488 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "line_num": 27, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 47, "entropy": 3.8375 }, { "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "line_num": 28, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, "value_end": 120, "entropy": 3.30679 }, { "line": "-----END LOW ENTROPY PRIVATE KEY-----", "line_num": 29, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 37, "entropy": 3.55488 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "line_num": 27, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 47, "entropy": 3.8375 }, { "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "line_num": 28, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, "value_end": 120, "entropy": 3.30679 }, { "line": "-----END LOW ENTROPY PRIVATE KEY-----", "line_num": 29, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 37, "entropy": 3.55488 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " * -----BEGIN PGP PRIVATE KEY BLOCK-----", "line_num": 35, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 42, "entropy": 3.62218 }, { "line": " * Version: GnuPG v1.4.12 (GNU/Linux)", "line_num": 36, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": " * Version: GnuPG v1.4.12 (GNU/Linux)", "value_start": 0, "value_end": 39, "entropy": 4.33255 }, { "line": "", "line_num": 37, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "", "value_start": 0, "value_end": 0, "entropy": 0.0 }, { "line": " * KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "line_num": 38, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "line_num": 39, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " //\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "line_num": 40, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "value_start": 4, "value_end": 68, "entropy": 5.20695 }, { "line": " ///\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "line_num": 41, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "value_start": 5, "value_end": 69, "entropy": 5.13876 }, { "line": " // UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "line_num": 42, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "value_start": 6, "value_end": 70, "entropy": 5.19868 }, { "line": " /// q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "line_num": 43, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "value_start": 7, "value_end": 71, "entropy": 5.13876 }, { "line": "// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/", "line_num": 44, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1", "value_start": 7, "value_end": 71, "entropy": 5.17157 }, { "line": "# # # * 874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "line_num": 45, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#+#+#+# * IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "line_num": 46, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "value_start": 11, "value_end": 75, "entropy": 5.17157 }, { "line": " + 'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +", "line_num": 47, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi", "value_start": 6, "value_end": 70, "entropy": 5.10751 }, { "line": " +\"\" +\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\"+", "line_num": 48, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh", "value_start": 8, "value_end": 72, "entropy": 5.10493 }, { "line": " * pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "line_num": 49, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "value_start": 5, "value_end": 69, "entropy": 5.23407 }, { "line": " * gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "line_num": 50, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "value_start": 5, "value_end": 69, "entropy": 5.15977 }, { "line": " * QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "line_num": 51, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "value_start": 5, "value_end": 69, "entropy": 5.20892 }, { "line": " * iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "line_num": 52, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "value_start": 5, "value_end": 69, "entropy": 4.94102 }, { "line": " * 5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "line_num": 53, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "value_start": 5, "value_end": 69, "entropy": 5.28891 }, { "line": " * HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "line_num": 54, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "line_num": 55, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "line_num": 56, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " * OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "line_num": 57, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "value_start": 5, "value_end": 69, "entropy": 5.04087 }, { "line": " * idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "line_num": 58, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "value_start": 5, "value_end": 69, "entropy": 5.14798 }, { "line": " * TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "line_num": 59, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "value_start": 5, "value_end": 69, "entropy": 5.17923 }, { "line": " * /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "line_num": 60, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "value_start": 5, "value_end": 69, "entropy": 4.99017 }, { "line": " * OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "line_num": 61, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "value_start": 5, "value_end": 69, "entropy": 5.21461 }, { "line": " * 4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "line_num": 62, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "value_start": 5, "value_end": 69, "entropy": 5.07782 }, { "line": " * sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "line_num": 63, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "value_start": 5, "value_end": 69, "entropy": 5.10907 }, { "line": " * ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "line_num": 64, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "value_start": 5, "value_end": 69, "entropy": 5.09314 }, { "line": " * n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "line_num": 65, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "value_start": 5, "value_end": 49, "entropy": 4.98773 }, { "line": " * =JG+I", "line_num": 66, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "=JG+I", "value_start": 5, "value_end": 10, "entropy": 2.32193 }, { "line": " * -----END PGP PRIVATE KEY BLOCK-----", "line_num": 67, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 40, "entropy": 3.62274 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.crx", "info": "FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "line_num": 2, "path": "./tests/samples/pem_key.crx", "info": "FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "value_start": 0, "value_end": 64, "entropy": 4.72268 }, { "line": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "line_num": 3, "path": "./tests/samples/pem_key.crx", "info": "FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "value_start": 0, "value_end": 64, "entropy": 5.12852 }, { "line": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN26Y", "line_num": 4, "path": "./tests/samples/pem_key.crx", "info": "FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN26Y", "value_start": 0, "value_end": 56, "entropy": 5.24468 }, { "line": "-----END PRIVATE KEY-----", "line_num": 5, "path": "./tests/samples/pem_key.crx", "info": "FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "k = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 1, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 7, "value_end": 34, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 2, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 10, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "#6 0.245 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 9, "value_end": 36, "entropy": 3.20029 }, { "line": "#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "line_num": 3, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "value_start": 9, "value_end": 73, "entropy": 4.69647 }, { "line": "#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "line_num": 4, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "value_start": 9, "value_end": 73, "entropy": 4.99586 }, { "line": "#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "line_num": 5, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "value_start": 9, "value_end": 73, "entropy": 5.13462 }, { "line": "#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "line_num": 6, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "value_start": 9, "value_end": 73, "entropy": 5.12086 }, { "line": "#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "line_num": 7, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "value_start": 9, "value_end": 73, "entropy": 4.78866 }, { "line": "#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "line_num": 8, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "value_start": 9, "value_end": 73, "entropy": 4.74561 }, { "line": "#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "line_num": 9, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "value_start": 9, "value_end": 73, "entropy": 4.89577 }, { "line": "#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "line_num": 10, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "value_start": 9, "value_end": 73, "entropy": 4.81189 }, { "line": "#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "line_num": 11, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "value_start": 9, "value_end": 73, "entropy": 4.74717 }, { "line": "#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "line_num": 12, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "value_start": 9, "value_end": 73, "entropy": 4.72227 }, { "line": "#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "line_num": 13, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "value_start": 9, "value_end": 73, "entropy": 4.71244 }, { "line": "#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "line_num": 14, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "value_start": 9, "value_end": 73, "entropy": 4.85947 }, { "line": "#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "line_num": 15, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "value_start": 9, "value_end": 73, "entropy": 4.86673 }, { "line": "#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "line_num": 16, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "value_start": 9, "value_end": 73, "entropy": 4.72006 }, { "line": "#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "line_num": 17, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "value_start": 9, "value_end": 73, "entropy": 4.49369 }, { "line": "#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "line_num": 18, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "value_start": 9, "value_end": 73, "entropy": 4.85141 }, { "line": "#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "line_num": 19, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "value_start": 9, "value_end": 73, "entropy": 4.92157 }, { "line": "#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "line_num": 20, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "value_start": 9, "value_end": 73, "entropy": 4.71436 }, { "line": "#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "line_num": 21, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "value_start": 9, "value_end": 73, "entropy": 4.69102 }, { "line": "#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "line_num": 22, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "value_start": 9, "value_end": 73, "entropy": 4.55202 }, { "line": "#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "line_num": 23, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "value_start": 9, "value_end": 73, "entropy": 4.70776 }, { "line": "#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "line_num": 24, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "value_start": 9, "value_end": 73, "entropy": 4.68689 }, { "line": "#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "line_num": 25, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "value_start": 9, "value_end": 73, "entropy": 4.85337 }, { "line": "#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "line_num": 26, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "value_start": 9, "value_end": 73, "entropy": 4.79657 }, { "line": "#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "line_num": 27, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "value_start": 9, "value_end": 73, "entropy": 4.76945 }, { "line": "#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "line_num": 28, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "value_start": 9, "value_end": 73, "entropy": 4.70126 }, { "line": "#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "line_num": 29, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "value_start": 9, "value_end": 73, "entropy": 4.74525 }, { "line": "#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "line_num": 30, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "line_num": 31, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "value_start": 9, "value_end": 73, "entropy": 4.84924 }, { "line": "#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "line_num": 32, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "value_start": 9, "value_end": 73, "entropy": 4.78518 }, { "line": "#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "line_num": 33, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "value_start": 9, "value_end": 73, "entropy": 4.73346 }, { "line": "#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "line_num": 34, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "value_start": 9, "value_end": 73, "entropy": 4.69143 }, { "line": "#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "line_num": 35, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "line_num": 36, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "value_start": 9, "value_end": 73, "entropy": 4.94712 }, { "line": "#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "line_num": 37, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "value_start": 9, "value_end": 73, "entropy": 5.09727 }, { "line": "#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "line_num": 38, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "line_num": 39, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "line_num": 40, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "value_start": 9, "value_end": 73, "entropy": 5.46875 }, { "line": "#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "line_num": 41, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "line_num": 42, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "value_start": 9, "value_end": 73, "entropy": 5.17923 }, { "line": "#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "line_num": 43, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "line_num": 44, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "line_num": 45, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "line_num": 46, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "value_start": 9, "value_end": 73, "entropy": 5.10751 }, { "line": "#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "line_num": 47, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "line_num": 48, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "line_num": 49, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "line_num": 50, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "line_num": 51, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "line_num": 52, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "value_start": 9, "value_end": 73, "entropy": 5.32782 }, { "line": "#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "line_num": 53, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "line_num": 54, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "value_start": 9, "value_end": 73, "entropy": 5.07212 }, { "line": "#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "line_num": 55, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "line_num": 56, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "line_num": 57, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "value_start": 9, "value_end": 73, "entropy": 5.23407 }, { "line": "#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "line_num": 58, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "line_num": 59, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "value_start": 9, "value_end": 73, "entropy": 5.19516 }, { "line": "#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "line_num": 60, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "line_num": 61, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "value_start": 9, "value_end": 73, "entropy": 5.17157 }, { "line": "#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "line_num": 62, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "value_start": 9, "value_end": 73, "entropy": 5.24173 }, { "line": "#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "line_num": 63, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "line_num": 64, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "value_start": 9, "value_end": 73, "entropy": 5.15821 }, { "line": "#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "line_num": 65, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "value_start": 9, "value_end": 73, "entropy": 5.04657 }, { "line": "#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "line_num": 66, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "line_num": 67, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "value_start": 9, "value_end": 73, "entropy": 5.11673 }, { "line": "#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "line_num": 68, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "value_start": 9, "value_end": 73, "entropy": 4.92197 }, { "line": "#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "line_num": 69, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "value_start": 9, "value_end": 73, "entropy": 5.20282 }, { "line": "#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "line_num": 70, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "value_start": 9, "value_end": 73, "entropy": 5.30836 }, { "line": "#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "line_num": 71, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "line_num": 72, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "value_start": 9, "value_end": 73, "entropy": 5.19102 }, { "line": "#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "line_num": 73, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "line_num": 74, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "value_start": 9, "value_end": 73, "entropy": 5.08392 }, { "line": "#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "line_num": 75, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "line_num": 76, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "value_start": 9, "value_end": 73, "entropy": 5.33195 }, { "line": "#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "line_num": 77, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "value_start": 9, "value_end": 73, "entropy": 5.16743 }, { "line": "#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "line_num": 78, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "value_start": 9, "value_end": 73, "entropy": 5.26118 }, { "line": "#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "line_num": 79, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "value_start": 9, "value_end": 73, "entropy": 5.21048 }, { "line": "#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "line_num": 80, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "line_num": 81, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "line_num": 82, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "value_start": 9, "value_end": 73, "entropy": 4.99017 }, { "line": "#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "line_num": 83, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "value_start": 9, "value_end": 73, "entropy": 5.38266 }, { "line": "#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "line_num": 84, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "value_start": 9, "value_end": 73, "entropy": 5.28477 }, { "line": "#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "line_num": 85, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "line_num": 86, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "value_start": 9, "value_end": 73, "entropy": 5.10493 }, { "line": "#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "line_num": 87, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "line_num": 88, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "line_num": 89, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "line_num": 90, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "line_num": 91, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "value_start": 9, "value_end": 73, "entropy": 5.16391 }, { "line": "#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "line_num": 92, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "value_start": 9, "value_end": 73, "entropy": 5.31602 }, { "line": "#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "line_num": 93, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "line_num": 94, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "value_start": 9, "value_end": 73, "entropy": 4.96658 }, { "line": "#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "line_num": 95, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "line_num": 96, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "value_start": 9, "value_end": 73, "entropy": 5.10907 }, { "line": "#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "line_num": 97, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "line_num": 98, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "line_num": 99, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "value_start": 9, "value_end": 73, "entropy": 5.27711 }, { "line": "#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "line_num": 100, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "line_num": 101, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "value_start": 9, "value_end": 73, "entropy": 5.05423 }, { "line": "#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "line_num": 102, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "value_start": 9, "value_end": 73, "entropy": 4.90408 }, { "line": "#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "line_num": 103, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "line_num": 104, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "value_start": 9, "value_end": 73, "entropy": 5.13266 }, { "line": "#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "line_num": 105, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "value_start": 9, "value_end": 73, "entropy": 5.14798 }, { "line": "#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS", "line_num": 106, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aANEEoU1dXIzisq6pQ0J8AKS", "value_start": 9, "value_end": 33, "entropy": 4.4183 }, { "line": "#6 0.245 -----END PRIVATE KEY-----", "line_num": 107, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 9, "value_end": 34, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"rsa512.log\": \"\\\\r\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\r\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\r\\\\n#5 DONE 0.3s\\\\r\\\\n\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.docker.log.json", "info": "FILE:./tests/samples/pem_key.p.docker.log.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----", "value_start": 102, "value_end": 749, "entropy": 5.8742 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\\r\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\r\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\r\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\r\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\r\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\r\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\r\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\r\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\r\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\r\\n#5 0.228 ivYSmyJQhq+V\\r\\n#5 0.228 -----END PRIVATE KEY-----\\r\\n#5 DONE 0.3s\\r\\n", "line_num": 1, "path": "./tests/samples/pem_key.p.docker.log.json", "info": "FILE:./tests/samples/pem_key.p.docker.log.json|STRUCT|STRING:rsa512.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\r\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\r\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\r\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\r\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\r\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\r\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\r\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\r\\n#5 0.228 ivYSmyJQhq+V\\r\\n#5 0.228 -----END PRIVATE KEY-----", "value_start": 82, "value_end": 711, "entropy": 5.91095 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "line_num": 2, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "value_start": 0, "value_end": 64, "entropy": 4.72268 }, { "line": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "line_num": 3, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "value_start": 0, "value_end": 64, "entropy": 5.12852 }, { "line": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "line_num": 4, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "value_start": 0, "value_end": 56, "entropy": 5.24468 }, { "line": "-----END PRIVATE KEY-----", "line_num": 5, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 25, "value_end": 55, "entropy": 3.30775 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "line_num": 2, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "value_start": 0, "value_end": 64, "entropy": 4.64072 }, { "line": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "line_num": 3, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "value_start": 0, "value_end": 64, "entropy": 5.22641 }, { "line": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "line_num": 4, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "value_start": 0, "value_end": 56, "entropy": 5.11058 }, { "line": "-----END EC PRIVATE KEY-----`", "line_num": 5, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END EC PRIVATE KEY-----", "value_start": 0, "value_end": 28, "entropy": 3.16542 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " PRIVATE_KEY = \"-----BEGIN RSA PRIVATE KEY-----\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 19, "value_end": 50, "entropy": 3.38229 }, { "line": " + \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n", "value_start": 10, "value_end": 74, "entropy": 4.53081 }, { "line": " + \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp", "value_start": 11, "value_end": 75, "entropy": 5.25352 }, { "line": " + \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP", "value_start": 13, "value_end": 77, "entropy": 5.09727 }, { "line": " + \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI", "value_start": 11, "value_end": 75, "entropy": 5.10907 }, { "line": " + \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5", "value_start": 9, "value_end": 73, "entropy": 5.0629 }, { "line": " + \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR", "value_start": 10, "value_end": 74, "entropy": 5.10907 }, { "line": " + \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\n\"", "line_num": 10, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0", "value_start": 11, "value_end": 75, "entropy": 5.15211 }, { "line": " + \"GeGaqMojMT7//g==\\n\"", "line_num": 11, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GeGaqMojMT7//g==", "value_start": 10, "value_end": 26, "entropy": 3.5 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\n\";", "line_num": 12, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 9, "value_end": 38, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 16, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 6, "value_end": 33, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 17, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 18, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 19, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 20, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 21, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 22, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 23, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 24, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 25, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 20, "value_end": 47, "entropy": 3.20029 }, { "line": "2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "line_num": 3, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "value_start": 20, "value_end": 84, "entropy": 4.67767 }, { "line": "2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "line_num": 4, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "value_start": 20, "value_end": 84, "entropy": 5.06602 }, { "line": "2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "line_num": 5, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "line_num": 6, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "line_num": 7, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "value_start": 20, "value_end": 84, "entropy": 5.27298 }, { "line": "2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "line_num": 8, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "value_start": 20, "value_end": 84, "entropy": 5.4375 }, { "line": "2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "line_num": 9, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "line_num": 10, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "value_start": 20, "value_end": 84, "entropy": 5.2382 }, { "line": "2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "line_num": 11, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "value_start": 20, "value_end": 84, "entropy": 5.27711 }, { "line": "2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "line_num": 12, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "line_num": 13, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "value_start": 20, "value_end": 84, "entropy": 5.09571 }, { "line": "2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "line_num": 14, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "value_start": 20, "value_end": 84, "entropy": 5.34375 }, { "line": "2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "line_num": 15, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "value_start": 20, "value_end": 84, "entropy": 5.14384 }, { "line": "2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "line_num": 16, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "value_start": 20, "value_end": 84, "entropy": 5.22993 }, { "line": "2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "line_num": 17, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "line_num": 18, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "value_start": 20, "value_end": 84, "entropy": 4.86869 }, { "line": "2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "line_num": 19, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "value_start": 20, "value_end": 84, "entropy": 5.35907 }, { "line": "2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "line_num": 20, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "value_start": 20, "value_end": 84, "entropy": 5.24173 }, { "line": "2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "line_num": 21, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "value_start": 20, "value_end": 84, "entropy": 5.00352 }, { "line": "2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "line_num": 22, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "line_num": 23, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "line_num": 24, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "line_num": 25, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "value_start": 20, "value_end": 84, "entropy": 4.95282 }, { "line": "2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "line_num": 26, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "value_start": 20, "value_end": 84, "entropy": 5.05836 }, { "line": "2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "line_num": 27, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "line_num": 28, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "line_num": 29, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "value_start": 20, "value_end": 84, "entropy": 5.13462 }, { "line": "2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "line_num": 30, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "line_num": 31, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "line_num": 32, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "value_start": 20, "value_end": 84, "entropy": 5.04243 }, { "line": "2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "line_num": 33, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "line_num": 34, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "value_start": 20, "value_end": 84, "entropy": 4.84727 }, { "line": "2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "line_num": 35, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "line_num": 36, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "line_num": 37, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "value_start": 20, "value_end": 84, "entropy": 5.13618 }, { "line": "2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "line_num": 38, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "value_start": 20, "value_end": 84, "entropy": 5.04657 }, { "line": "2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "line_num": 39, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "value_start": 20, "value_end": 84, "entropy": 5.10141 }, { "line": "2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "line_num": 40, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "value_start": 20, "value_end": 84, "entropy": 5.11673 }, { "line": "2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "line_num": 41, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "line_num": 42, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "line_num": 43, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "value_start": 20, "value_end": 84, "entropy": 5.21461 }, { "line": "2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "line_num": 44, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "line_num": 45, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "value_start": 20, "value_end": 84, "entropy": 5.02752 }, { "line": "2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "line_num": 46, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "line_num": 47, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "value_start": 20, "value_end": 84, "entropy": 5.25 }, { "line": "2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "line_num": 48, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "value_start": 20, "value_end": 84, "entropy": 5.12852 }, { "line": "2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "line_num": 49, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "value_start": 20, "value_end": 84, "entropy": 5.12283 }, { "line": "2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "line_num": 50, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "value_start": 20, "value_end": 84, "entropy": 5.12696 }, { "line": "2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "line_num": 51, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "line_num": 52, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "line_num": 53, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "line_num": 54, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "value_start": 20, "value_end": 84, "entropy": 4.94712 }, { "line": "2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "line_num": 55, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "line_num": 56, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "line_num": 57, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "value_start": 20, "value_end": 84, "entropy": 4.98251 }, { "line": "2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "line_num": 58, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "value_start": 20, "value_end": 84, "entropy": 5.19102 }, { "line": "2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "line_num": 59, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "line_num": 60, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "value_start": 20, "value_end": 84, "entropy": 5.02711 }, { "line": "2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "line_num": 61, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "value_start": 20, "value_end": 84, "entropy": 5.15211 }, { "line": "2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "line_num": 62, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "value_start": 20, "value_end": 84, "entropy": 5.09727 }, { "line": "2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "line_num": 63, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "value_start": 20, "value_end": 84, "entropy": 5.25352 }, { "line": "2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "line_num": 64, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "line_num": 65, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "line_num": 66, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "line_num": 67, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "value_start": 20, "value_end": 84, "entropy": 5.03477 }, { "line": "2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "line_num": 68, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "value_start": 20, "value_end": 84, "entropy": 4.99173 }, { "line": "2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "line_num": 69, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "line_num": 70, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "value_start": 20, "value_end": 84, "entropy": 5.21048 }, { "line": "2026-04-26 12:36:01 qwI=", "line_num": 71, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qwI=", "value_start": 20, "value_end": 24, "entropy": 2.0 }, { "line": "2026-04-26 12:36:01 -----END PRIVATE KEY-----", "line_num": 72, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 20, "value_end": 45, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----", "value_start": 157, "value_end": 6245, "entropy": 5.8771 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 20, "value_end": 47, "entropy": 3.20029 }, { "line": "2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "line_num": 3, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "value_start": 20, "value_end": 84, "entropy": 4.67767 }, { "line": "2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "line_num": 4, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "value_start": 20, "value_end": 84, "entropy": 5.06602 }, { "line": "2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "line_num": 5, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "line_num": 6, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "line_num": 7, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "value_start": 20, "value_end": 84, "entropy": 5.27298 }, { "line": "2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "line_num": 8, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "value_start": 20, "value_end": 84, "entropy": 5.4375 }, { "line": "2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "line_num": 9, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "line_num": 10, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "value_start": 20, "value_end": 84, "entropy": 5.2382 }, { "line": "2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "line_num": 11, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "value_start": 20, "value_end": 84, "entropy": 5.27711 }, { "line": "2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "line_num": 12, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "line_num": 13, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "value_start": 20, "value_end": 84, "entropy": 5.09571 }, { "line": "2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "line_num": 14, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "value_start": 20, "value_end": 84, "entropy": 5.34375 }, { "line": "2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "line_num": 15, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "value_start": 20, "value_end": 84, "entropy": 5.14384 }, { "line": "2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "line_num": 16, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "value_start": 20, "value_end": 84, "entropy": 5.22993 }, { "line": "2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "line_num": 17, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "line_num": 18, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "value_start": 20, "value_end": 84, "entropy": 4.86869 }, { "line": "2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "line_num": 19, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "value_start": 20, "value_end": 84, "entropy": 5.35907 }, { "line": "2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "line_num": 20, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "value_start": 20, "value_end": 84, "entropy": 5.24173 }, { "line": "2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "line_num": 21, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "value_start": 20, "value_end": 84, "entropy": 5.00352 }, { "line": "2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "line_num": 22, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "line_num": 23, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "line_num": 24, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "line_num": 25, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "value_start": 20, "value_end": 84, "entropy": 4.95282 }, { "line": "2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "line_num": 26, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "value_start": 20, "value_end": 84, "entropy": 5.05836 }, { "line": "2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "line_num": 27, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "line_num": 28, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "line_num": 29, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "value_start": 20, "value_end": 84, "entropy": 5.13462 }, { "line": "2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "line_num": 30, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "line_num": 31, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "line_num": 32, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "value_start": 20, "value_end": 84, "entropy": 5.04243 }, { "line": "2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "line_num": 33, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "line_num": 34, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "value_start": 20, "value_end": 84, "entropy": 4.84727 }, { "line": "2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "line_num": 35, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "line_num": 36, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "line_num": 37, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "value_start": 20, "value_end": 84, "entropy": 5.13618 }, { "line": "2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "line_num": 38, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "value_start": 20, "value_end": 84, "entropy": 5.04657 }, { "line": "2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "line_num": 39, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "value_start": 20, "value_end": 84, "entropy": 5.10141 }, { "line": "2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "line_num": 40, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "value_start": 20, "value_end": 84, "entropy": 5.11673 }, { "line": "2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "line_num": 41, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "line_num": 42, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "line_num": 43, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "value_start": 20, "value_end": 84, "entropy": 5.21461 }, { "line": "2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "line_num": 44, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "line_num": 45, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "value_start": 20, "value_end": 84, "entropy": 5.02752 }, { "line": "2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "line_num": 46, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "line_num": 47, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "value_start": 20, "value_end": 84, "entropy": 5.25 }, { "line": "2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "line_num": 48, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "value_start": 20, "value_end": 84, "entropy": 5.12852 }, { "line": "2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "line_num": 49, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "value_start": 20, "value_end": 84, "entropy": 5.12283 }, { "line": "2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "line_num": 50, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "value_start": 20, "value_end": 84, "entropy": 5.12696 }, { "line": "2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "line_num": 51, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "line_num": 52, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "line_num": 53, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "line_num": 54, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "value_start": 20, "value_end": 84, "entropy": 4.94712 }, { "line": "2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "line_num": 55, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "line_num": 56, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "line_num": 57, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "value_start": 20, "value_end": 84, "entropy": 4.98251 }, { "line": "2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "line_num": 58, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "value_start": 20, "value_end": 84, "entropy": 5.19102 }, { "line": "2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "line_num": 59, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "line_num": 60, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "value_start": 20, "value_end": 84, "entropy": 5.02711 }, { "line": "2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "line_num": 61, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "value_start": 20, "value_end": 84, "entropy": 5.15211 }, { "line": "2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "line_num": 62, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "value_start": 20, "value_end": 84, "entropy": 5.09727 }, { "line": "2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "line_num": 63, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "value_start": 20, "value_end": 84, "entropy": 5.25352 }, { "line": "2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "line_num": 64, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "line_num": 65, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "line_num": 66, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "line_num": 67, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "value_start": 20, "value_end": 84, "entropy": 5.03477 }, { "line": "2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "line_num": 68, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "value_start": 20, "value_end": 84, "entropy": 4.99173 }, { "line": "2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "line_num": 69, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "line_num": 70, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "value_start": 20, "value_end": 84, "entropy": 5.21048 }, { "line": "2026-04-26 12:36:01 qwI=", "line_num": 71, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qwI=", "value_start": 20, "value_end": 24, "entropy": 2.0 }, { "line": "2026-04-26 12:36:01 -----END PRIVATE KEY-----", "line_num": 72, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 20, "value_end": 45, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "line_num": 2, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "value_start": 0, "value_end": 64, "entropy": 4.67611 }, { "line": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "line_num": 3, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "value_start": 0, "value_end": 64, "entropy": 5.10493 }, { "line": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "line_num": 4, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "value_start": 0, "value_end": 64, "entropy": 5.21461 }, { "line": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "line_num": 5, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "value_start": 0, "value_end": 64, "entropy": 4.97641 }, { "line": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "line_num": 6, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "value_start": 0, "value_end": 64, "entropy": 5.17923 }, { "line": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "line_num": 7, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "value_start": 0, "value_end": 64, "entropy": 5.25766 }, { "line": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "line_num": 8, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "value_start": 0, "value_end": 64, "entropy": 5.35141 }, { "line": "24n7nBfD3ZXv", "line_num": 9, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "24n7nBfD3ZXv", "value_start": 0, "value_end": 12, "entropy": 3.4183 }, { "line": "-----END PRIVATE KEY-----", "line_num": 10, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.tar", "info": "FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "PayPal Braintree Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "line_num": 1, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:.git/paypal_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "value_start": 0, "value_end": 73, "entropy": 4.39985 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "line_num": 1, "path": "./tests/samples/pem_key.zip", "info": "FILE:./tests/samples/pem_key.zip|ZIP:3.zip|ZIP:2.zip|ZIP:2|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "value_start": 0, "value_end": 64, "entropy": 5.28891 } ] }, { "rule": "Perplexity API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/perplexity", "info": "FILE:./tests/samples/perplexity|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 53, "entropy": 5.08142 } ] }, { "rule": "Picatic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "FILE:./tests/samples/picatic_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "FILE:./tests/samples/picatic_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "PKCS with password 'changeme'", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAhknVwZ/8XABAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEECI9IqqZ3J6xUKkiXcNZCaGAggIQrWgdiM7DBZIyAS6mocBSb/giKZLPMq23x1nZNdf4mkjEk2nLjNbtA09n8d/2FxBvFKLQfxZfxtq76HzaTlCvVz8PhcGPhHumOXUAzBtT3Mv4WDmub/1pAZsjInN6K+CCQlb7tPLy8OlHHHP5HYET6LXUUy1RcslDJNJdb9YDlhjhFOoGgd7fApnFAwsjQDjNVT/DCnuQQHrSylezYZP6HM4Sf7INrdbHviJU/K0Ac1hBDXrndhaOWEGnaKXknycIZqN0HgftdUjiujPhI0XdIE008U+6hxibTe/Okdn6URlmOtbuXOFQFYO7nAN8wOW2/n1nZSQkZflV7P0+Vq2Ce4tfCUCyj+pJuuKygGA6D4gUoY74N4LGjDHvzjY00f5htdQ3WRAXcuG1zsORsjOhRB8Ag5tKOYCMQF9GMhFQfhZwg07zaZS7dU8fyvIPFYSAynr7Uef6GMkvZyw8DF6dku4X/Jgm/h9b7jb7x289hjowUYVYZ7/+KQPdH2Pj68BrUxtFFc118W1P1FE4huYe11KfRBgGy2NugCCPkExKfQrFPRM32hGd+2AMTrfpVoBkY1Dj4IKwEKIufSTnyvtl+MIMB2cwumD/A/IVksr9qV7ptfwuZl1pzqkZIUAoVgDs8gqul/YOT9g0QWydP/Vwh30v/6RAmwAEUhTydhag2fP5JQguoVQXcHPYgYfIqjf+MIICOwYJKoZIhvcNAQcBoIICLASCAigwggIkMIICIAYLKoZIhvcNAQwKAQKgggHBMIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIA0VVM4PAVxMCAggAMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBA5WjHZFqFYRnvekUsb7V82BIIBYG5T1b/dWIkUslM7f7tmQy4vPlOeFDZv5U437Af9ZfrseIAiPXPXKUsQubwme2PH5cZQYV3AZY/6INPfSrhNw+feHGeSAYRmjugB8vEfaTV0Lml6MPi+sn+SaBGLYDNYRv8i4fb+V/cgUMGvVpMMKhDBiGrjjmC4d/R/asEcD3GhJSerfECS1pg/CWckL8l86jwF+DbX90+xe1ReJ4c/64bnQzRbRKTQdu7bIbAuZjfbBd8a3zsRawmH9uIE4RYNN9wHOSarwzKCT5JYMVBHv/tXqpxT12Z9z1sovAATo6JHIJ8x9qvmw3Yv7q20Vt5s/h8O8RiFefJS8hWd0gX85oTpOO2mww0NmbPgH0At2VHPItK5HA4pM5/qPjSp0netZoaKrdJypSbMJfAjG99FmZgp3MLQYphYRbM6g7RhWCeW4mM6pvqrk6YKWBsMKPQPnLD25pMfrnjR0LG0FnEClQ8xTDAjBgkqhkiG9w0BCRUxFgQUGY0PlBhhh6+fjx21HWim3e+syDowJQYJKoZIhvcNAQkUMRgeFgBlAHgAYQBtAHAAbABlAC4AYwBvAG0wQTAxMA0GCWCGSAFlAwQCAQUABCBb+Q7hc25Mh35RU/6qtG8NxT87qGEE8yzsqZzIOG9iogQIO3wdxp2pvhECAggA", "line_num": 0, "path": "./tests/samples/pkcs12.changeme.p12", "info": "FILE:./tests/samples/pkcs12.changeme.p12|PKCS_PASSWORD:b'changeme'", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b'changeme'", "value_start": -2, "value_end": -2, "entropy": 3.0958 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "line_num": 1, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "value_start": 0, "value_end": 44, "entropy": 4.86251 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "line_num": 2, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "value_start": 0, "value_end": 50, "entropy": 4.89366 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "line_num": 3, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "value_start": 0, "value_end": 53, "entropy": 5.07217 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "line_num": 4, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "value_start": 0, "value_end": 61, "entropy": 5.03312 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "line_num": 5, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "value_start": 0, "value_end": 64, "entropy": 5.04657 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "line_num": 1, "path": "./tests/samples/postman", "info": "FILE:./tests/samples/postman|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "value_start": 0, "value_end": 64, "entropy": 4.21698 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "line_num": 2, "path": "./tests/samples/postman", "info": "FILE:./tests/samples/postman|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "value_start": 0, "value_end": 31, "entropy": 4.3492 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81", "line_num": 10, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0572bc9-7a3e-beef-cafe-9129474bcd81", "value_start": 38, "value_end": 74, "entropy": 3.84286 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "line_num": 80, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "token", "variable_start": 33, "variable_end": 38, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 39, "value_end": 85, "entropy": 4.79509 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "line_num": 80, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "token", "variable_start": 33, "variable_end": 38, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 39, "value_end": 85, "entropy": 4.79509 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.859, "line_data_list": [ { "line": "id/pass : user/Jid8^5gvB", "line_num": 133, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "pass", "variable_start": 3, "variable_end": 7, "value": "user/Jid8^5gvB", "value_start": 10, "value_end": 24, "entropy": 3.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "147# password: Jd3OnNy^564eD5_sd", "line_num": 147, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "password", "variable_start": 5, "variable_end": 13, "value": "Jd3OnNy^564eD5_sd", "value_start": 15, "value_end": 32, "entropy": 3.85217 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "147# password: Jd3OnNy^564eD5_sd", "line_num": 147, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "password", "variable_start": 5, "variable_end": 13, "value": "Jd3OnNy^564eD5_sd", "value_start": 15, "value_end": 32, "entropy": 3.85217 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "151# a0ce4d19-7a3e-beef-cafe-9129474bcd81", "line_num": 151, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0ce4d19-7a3e-beef-cafe-9129474bcd81", "value_start": 5, "value_end": 41, "entropy": 3.74259 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "151# a0ce4d19-7a3e-beef-cafe-9129474bcd81", "line_num": 151, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0ce4d19-7a3e-beef-cafe-9129474bcd81", "value_start": 5, "value_end": 41, "entropy": 3.74259 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.929, "line_data_list": [ { "line": "pwd = \"cackle!\"", "line_num": 1, "path": "./tests/samples/pwd.gradle", "info": "FILE:./tests/samples/pwd.gradle|RAW", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "cackle!", "value_start": 7, "value_end": 14, "entropy": 2.52164 } ] }, { "rule": "PyPi API Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "line_num": 1, "path": "./tests/samples/pypi_token", "info": "FILE:./tests/samples/pypi_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "value_start": 0, "value_end": 179, "entropy": 5.5923 } ] }, { "rule": "RubyGems API Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "line_num": 1, "path": "./tests/samples/rubygems", "info": "FILE:./tests/samples/rubygems|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "value_start": 0, "value_end": 57, "entropy": 4.06282 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DFT5H59PHLAN0IA", "value_start": 9, "value_end": 26, "entropy": 3.45482 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DG9UE38D6ELk5l", "value_start": 27, "value_end": 43, "entropy": 3.625 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00Dh68fkeHGbDk92k", "value_start": 61, "value_end": 78, "entropy": 3.57247 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DyXD47kKDny11j", "value_start": 44, "value_end": 60, "entropy": 3.32782 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "line_num": 3, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "value_start": 8, "value_end": 120, "entropy": 5.19811 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "line_num": 4, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "value_start": 13, "value_end": 98, "entropy": 5.45622 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "salt1 = b'#!\\xae2389x&543@'", "line_num": 1, "path": "./tests/samples/salt.py", "info": "FILE:./tests/samples/salt.py|STRUCT|STRING:0|RAW", "variable": "salt1", "variable_start": 0, "variable_end": 5, "value": "#!\\xae2389x&543@", "value_start": 10, "value_end": 26, "entropy": 3.75 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "salt1 = b\"\\x23!\\xae2389x&543@\"", "line_num": 1, "path": "./tests/samples/salt.py", "info": "FILE:./tests/samples/salt.py|RAW", "variable": "salt1", "variable_start": 0, "variable_end": 5, "value": "\\x23!\\xae2389x&543@", "value_start": 10, "value_end": 29, "entropy": 3.53689 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "salt4 = {'salt5': 'my124%#$@s\\x04clt\\x00'}", "line_num": 1, "path": "./tests/samples/salt.py", "info": "FILE:./tests/samples/salt.py|STRUCT|STRING:3|RAW", "variable": "salt5", "variable_start": 10, "variable_end": 15, "value": "my124%#$@s\\x04clt\\x00", "value_start": 19, "value_end": 40, "entropy": 3.88018 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.949, "line_data_list": [ { "line": "salt3 = u\"\\u0020827634876\"", "line_num": 3, "path": "./tests/samples/salt.py", "info": "FILE:./tests/samples/salt.py|RAW", "variable": "salt3", "variable_start": 0, "variable_end": 5, "value": "\\u0020827634876", "value_start": 10, "value_end": 25, "entropy": 3.05656 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "salt4 = {\"salt5\": \"my124%#$@s\\x04clt\\0\"}", "line_num": 4, "path": "./tests/samples/salt.py", "info": "FILE:./tests/samples/salt.py|RAW", "variable": "salt5", "variable_start": 10, "variable_end": 15, "value": "my124%#$@s\\x04clt\\0", "value_start": 19, "value_end": 38, "entropy": 3.93214 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "json_escaped = \"{\\\\\\\"salt8\\\\\\\":\\\\\\\"4b9a6d8b638eb0c6\\\\\\\"}\"", "line_num": 5, "path": "./tests/samples/salt.py", "info": "FILE:./tests/samples/salt.py|RAW", "variable": "salt8", "variable_start": 21, "variable_end": 26, "value": "4b9a6d8b638eb0c6", "value_start": 35, "value_end": 51, "entropy": 3.28064 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = '77397566A117A00428B0FD9BDA65F051C88593B4D0DE27E1CCB073E378440DC4'", "line_num": 1, "path": "./tests/samples/sample.csv", "info": "FILE:./tests/samples/sample.csv|CSV|STRUCT:1|KEYWORD", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "77397566A117A00428B0FD9BDA65F051C88593B4D0DE27E1CCB073E378440DC4", "value_start": 12, "value_end": 76, "entropy": 3.91341 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = 'Jfb49,Hd2!@'", "line_num": 1, "path": "./tests/samples/sample.csv", "info": "FILE:./tests/samples/sample.csv|CSV|STRUCT:0|KEYWORD", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Jfb49,Hd2!@", "value_start": 12, "value_end": 23, "entropy": 3.45943 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "entropy": 3.38229 }, { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "entropy": 5.38892 }, { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "entropy": 5.21333 }, { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "entropy": 5.32505 }, { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "entropy": 5.26728 }, { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "entropy": 5.29359 }, { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "entropy": 5.40531 }, { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "entropy": 5.37254 }, { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "entropy": 5.30866 }, { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "entropy": 5.42517 }, { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "entropy": 5.10756 }, { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "entropy": 5.07054 }, { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "entropy": 3.24663 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "3aeb15a9-fade-beef-cafe-9129474bcd81", "line_num": 1, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0xb82:/44|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3aeb15a9-fade-beef-cafe-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.708 } ] }, { "rule": "BASE64 encoded PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==", "line_num": 1, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg", "value_start": 0, "value_end": 3078, "entropy": 5.49785 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " -----BEGIN EC PRIVATE KEY-----", "line_num": 22, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 8, "value_end": 38, "entropy": 3.30775 }, { "line": " MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9", "line_num": 23, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9", "value_start": 8, "value_end": 72, "entropy": 4.54632 }, { "line": " odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72", "line_num": 24, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72", "value_start": 8, "value_end": 72, "entropy": 3.63842 }, { "line": " dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==", "line_num": 25, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==", "value_start": 8, "value_end": 44, "entropy": 3.62593 }, { "line": " -----END EC PRIVATE KEY-----", "line_num": 26, "path": "./tests/samples/sample.deb", "info": "FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END EC PRIVATE KEY-----", "value_start": 8, "value_end": 36, "entropy": 3.16542 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "First line bace4d11-a001-be1a-c3fe-9829474b5d84", "line_num": 1, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-a001-be1a-c3fe-9829474b5d84", "value_start": 11, "value_end": 47, "entropy": 3.82924 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Default footer bace4119-f002-bdef-dafe-9129474bcd89", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/footer1.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4119-f002-bdef-dafe-9129474bcd89", "value_start": 1649, "value_end": 1685, "entropy": 3.71078 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Default footer bace4119-f002-bdef-dafe-9129474bcd89", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/footer2.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4119-f002-bdef-dafe-9129474bcd89", "value_start": 1649, "value_end": 1685, "entropy": 3.71078 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "First line bace4d11-a001-be1a-c3fe-9829474b5d84second line bace4d11-a002-be1a-c3fe-9829474b5d84Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84New page first line bace4d19-b001-b3e2-eac1-9129474bcd84Next page section bace4d19-c001-b3e2-eac1-9129474bcd84Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881next line in section bace4d19-c001-b3e2-eac1-9129474bcd84last page bace4d11-a003-be2a-c3fe-9829474b5d84", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-a002-be1a-c3fe-9829474b5d84", "value_start": 1913, "value_end": 1949, "entropy": 3.86383 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "First line bace4d11-a001-be1a-c3fe-9829474b5d84second line bace4d11-a002-be1a-c3fe-9829474b5d84Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84New page first line bace4d19-b001-b3e2-eac1-9129474bcd84Next page section bace4d19-c001-b3e2-eac1-9129474bcd84Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881next line in section bace4d19-c001-b3e2-eac1-9129474bcd84last page bace4d11-a003-be2a-c3fe-9829474b5d84", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-a003-be2a-c3fe-9829474b5d84", "value_start": 14444, "value_end": 14480, "entropy": 3.8848 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "First line bace4d11-a001-be1a-c3fe-9829474b5d84second line bace4d11-a002-be1a-c3fe-9829474b5d84Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84New page first line bace4d19-b001-b3e2-eac1-9129474bcd84Next page section bace4d19-c001-b3e2-eac1-9129474bcd84Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881next line in section bace4d19-c001-b3e2-eac1-9129474bcd84last page bace4d11-a003-be2a-c3fe-9829474b5d84", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-b003-be1a-c3fe-9829474b5d84", "value_start": 4417, "value_end": 4453, "entropy": 3.85021 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " PAGE 2 Second page header bace4d19-b002-beda-cafe-0929375bcd82", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/header1.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-b002-beda-cafe-0929375bcd82", "value_start": 1318, "value_end": 1354, "entropy": 3.80092 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "First line bace4d11-a001-be1a-c3fe-9829474b5d84second line bace4d11-a002-be1a-c3fe-9829474b5d84Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84New page first line bace4d19-b001-b3e2-eac1-9129474bcd84Next page section bace4d19-c001-b3e2-eac1-9129474bcd84Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881next line in section bace4d19-c001-b3e2-eac1-9129474bcd84last page bace4d11-a003-be2a-c3fe-9829474b5d84", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-c001-b3e2-eac1-9129474bcd84", "value_start": 8850, "value_end": 8886, "entropy": 3.66257 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "First line bace4d11-a001-be1a-c3fe-9829474b5d84second line bace4d11-a002-be1a-c3fe-9829474b5d84Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84New page first line bace4d19-b001-b3e2-eac1-9129474bcd84Next page section bace4d19-c001-b3e2-eac1-9129474bcd84Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881next line in section bace4d19-c001-b3e2-eac1-9129474bcd84last page bace4d11-a003-be2a-c3fe-9829474b5d84", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-c001-b3e2-eac1-9129474bcd84", "value_start": 13449, "value_end": 13485, "entropy": 3.66257 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "New page first line bace4d19-b001-b3e2-eac1-9129474bcd84", "line_num": 4, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-b001-b3e2-eac1-9129474bcd84", "value_start": 20, "value_end": 56, "entropy": 3.66257 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881", "line_num": 6, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b5c6471d-a2b2-b4ef-ca5e-9121476bc881", "value_start": 13, "value_end": 49, "entropy": 3.77368 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Third page header bace4d19-b003-beda-cafe-0929375bcd82", "line_num": 10, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-b003-beda-cafe-0929375bcd82", "value_start": 18, "value_end": 54, "entropy": 3.82189 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "first_page_header bace4d11-f001-beea-c3fe-9829474b5d84", "line_num": 11, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-f001-beea-c3fe-9829474b5d84", "value_start": 18, "value_end": 54, "entropy": 3.85021 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "https://jrfdeg:dh3sjr8b@prod-best-sec.net:32768/architecture", "line_num": 1640, "path": "./tests/samples/sample.elf", "info": "FILE:./tests/samples/sample.elf|STRINGS", "variable": "https://", "variable_start": 0, "variable_end": 8, "value": "dh3sjr8b", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.982, "line_data_list": [ { "line": "0{\"TOKEN\":\"b234fa59-dead-beef-cafe-91294cd81be3\"}", "line_num": 783, "path": "./tests/samples/sample.gif", "info": "FILE:./tests/samples/sample.gif|STRINGS", "variable": "TOKEN", "variable_start": 3, "variable_end": 8, "value": "b234fa59-dead-beef-cafe-91294cd81be3", "value_start": 11, "value_end": 47, "entropy": 3.68703 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "0{\"TOKEN\":\"b234fa59-dead-beef-cafe-91294cd81be3\"}", "line_num": 783, "path": "./tests/samples/sample.gif", "info": "FILE:./tests/samples/sample.gif|STRINGS", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b234fa59-dead-beef-cafe-91294cd81be3", "value_start": 11, "value_end": 47, "entropy": 3.68703 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.812, "line_data_list": [ { "line": "#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "line_num": 2, "path": "./tests/samples/sample.h", "info": "FILE:./tests/samples/sample.h|RAW", "variable": "AESKEY", "variable_start": 8, "variable_end": 14, "value": "0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "value_start": 16, "value_end": 83, "entropy": 3.24263 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.949, "line_data_list": [ { "line": "2{\"TOKEN\":\"b234fa59-dead-beef-cafe-91294cd81be1\"}", "line_num": 23, "path": "./tests/samples/sample.jpg", "info": "FILE:./tests/samples/sample.jpg|STRINGS", "variable": "TOKEN", "variable_start": 3, "variable_end": 8, "value": "b234fa59-dead-beef-cafe-91294cd81be1", "value_start": 11, "value_end": 47, "entropy": 3.66606 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2{\"TOKEN\":\"b234fa59-dead-beef-cafe-91294cd81be1\"}", "line_num": 23, "path": "./tests/samples/sample.jpg", "info": "FILE:./tests/samples/sample.jpg|STRINGS", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b234fa59-dead-beef-cafe-91294cd81be1", "value_start": 11, "value_end": 47, "entropy": 3.66606 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.986, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AKIAGIREOGIAXLSX4BT5userhostloginpassword\ud64d\uae38\ub3d9\uc804192.168.0.1adminH0NgGi1d0nGroot127.0.0.1rootiMr00TA1 password is w3Ry5tR0nGA2 ID:master,PW:dipPr10Gg!B3 192.168.0.1 master/NBd@126t!\uc8fc\uc778 FNAT-CC0TG_old10.53.51.17192.168.101.96377710.53.51.17192.168.101.9 63777 \uc8fc\uc778 FNAT-CC0TG_oldpassword:\u25a1 \ubb38\uc758 \ub0b4\uc6a9 : \u203b Error Stack Trace\ub3c4 \ud568\uaed8 \ucca8\ubd80 \ubd80\ud0c1\ub4dc\ub9bd\ub2c8\ub2e4.12345F16 224.52.124.93 root/A0dM1Nka", "line_num": 2, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|ZIP:content.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAXLSX4BT5", "value_start": 7621, "value_end": 7641, "entropy": 3.64644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = \u201cXdj@jcN834b\u201d", "line_num": 1, "path": "./tests/samples/sample.pdf", "info": "FILE:./tests/samples/sample.pdf|PDF:1|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Xdj@jcN834b", "value_start": 12, "value_end": 23, "entropy": 3.27761 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "token = \u2018bace4d31-fa7e-beef-cafe-912947cbe28\u2019", "line_num": 1, "path": "./tests/samples/sample.pdf", "info": "FILE:./tests/samples/sample.pdf|PDF:1|RAW", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d31-fa7e-beef-cafe-912947cbe28", "value_start": 9, "value_end": 44, "entropy": 3.62845 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/sample.pdf", "info": "FILE:./tests/samples/sample.pdf|PDF:1|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 40, "entropy": 4.97193 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "0c6fa1bc-2da5-dead-beef-58e1008ae93a", "line_num": 1, "path": "./tests/samples/sample.png", "info": "FILE:./tests/samples/sample.png|PNG_ZTXT:Uuid ztxt:0x63|ZLIB|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0c6fa1bc-2da5-dead-beef-58e1008ae93a", "value_start": 0, "value_end": 36, "entropy": 3.70523 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "6d93cf8f-1ad7-dead-beef-487cd1ca805f", "line_num": 1, "path": "./tests/samples/sample.png", "info": "FILE:./tests/samples/sample.png|PNG_ITXT_1:Uuid itxt comp:en:Magic ID (compressed):0xf4|ZLIB|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6d93cf8f-1ad7-dead-beef-487cd1ca805f", "value_start": 0, "value_end": 36, "entropy": 3.76356 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "a75ea7b1-8643-dead-beef-42f3af69f8b5", "line_num": 1, "path": "./tests/samples/sample.png", "info": "FILE:./tests/samples/sample.png|PNG_ITXT_0:Uuid itxt plain:en:Magic ID:0xa6|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a75ea7b1-8643-dead-beef-42f3af69f8b5", "value_start": 0, "value_end": 36, "entropy": 3.76007 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "f99080e6-91be-dead-beef-381896d6e93c", "line_num": 1, "path": "./tests/samples/sample.png", "info": "FILE:./tests/samples/sample.png|PNG_TEXT:Uuid text:0x29|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "f99080e6-91be-dead-beef-381896d6e93c", "value_start": 0, "value_end": 36, "entropy": 3.52037 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " Click to edit the title text format<footer><number><date/time>", "line_num": 2, "path": "./tests/samples/sample.pptx", "info": "FILE:./tests/samples/sample.pptx|ZIP:ppt/slideMasters/slideMaster1.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1B26FE4F-8819-409F-9556-40447A77EBF2", "value_start": 3868, "value_end": 3904, "entropy": 3.69439 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " Footer<#>", "line_num": 2, "path": "./tests/samples/sample.pptx", "info": "FILE:./tests/samples/sample.pptx|ZIP:ppt/slideLayouts/slideLayout1.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "42F61B0C-09B2-455B-8854-E1D3A3979B74", "value_start": 2610, "value_end": 2646, "entropy": 3.90576 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " Follow the white rabbitAKIAGIREOGIPPTX1Y45X", "line_num": 2, "path": "./tests/samples/sample.pptx", "info": "FILE:./tests/samples/sample.pptx|ZIP:ppt/slides/slide1.xml|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIPPTX1Y45X", "value_start": 2403, "value_end": 2423, "entropy": 3.68418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.954, "line_data_list": [ { "line": "TOKEN = 1102181139266001652353292050", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:11|RAW", "variable": "TOKEN", "variable_start": 0, "variable_end": 5, "value": "1102181139266001652353292050", "value_start": 8, "value_end": 36, "entropy": 2.84329 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.67, "line_data_list": [ { "line": "API_SECRET_KEY = bytes([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:5|RAW", "variable": "API_SECRET_KEY", "variable_start": 0, "variable_end": 14, "value": "223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98", "value_start": 24, "value_end": 93, "entropy": 2.86622 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 0.67, "line_data_list": [ { "line": "API_SECRET_KEY = bytes([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:5|RAW", "variable": "API_SECRET_KEY", "variable_start": 0, "variable_end": 14, "value": "223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98", "value_start": 24, "value_end": 93, "entropy": 2.86622 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.67, "line_data_list": [ { "line": "API_SECRET_KEY = bytes([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:5|RAW", "variable": "API_SECRET_KEY", "variable_start": 0, "variable_end": 14, "value": "223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98", "value_start": 24, "value_end": 93, "entropy": 2.86622 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": 0.927, "line_data_list": [ { "line": "AUTH_SECRET_NONCE = bytearray([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:6|RAW", "variable": "AUTH_SECRET_NONCE", "variable_start": 0, "variable_end": 17, "value": "223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98", "value_start": 31, "value_end": 100, "entropy": 2.86622 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 0.927, "line_data_list": [ { "line": "AUTH_SECRET_NONCE = bytearray([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:6|RAW", "variable": "AUTH_SECRET_NONCE", "variable_start": 0, "variable_end": 17, "value": "223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98", "value_start": 31, "value_end": 100, "entropy": 2.86622 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.927, "line_data_list": [ { "line": "AUTH_SECRET_NONCE = bytearray([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:6|RAW", "variable": "AUTH_SECRET_NONCE", "variable_start": 0, "variable_end": 17, "value": "223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98", "value_start": 31, "value_end": 100, "entropy": 2.86622 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "AUTH = 'Basic Hbr73gu7gdsr=='", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:3|RAW", "variable": "AUTH", "variable_start": 0, "variable_end": 4, "value": "Hbr73gu7gdsr==", "value_start": 14, "value_end": 28, "entropy": 3.23593 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET = os.getenv('SECRET', 'R15br4jtfcFbWh9G7EZTb6jR12c9We')", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:9|RAW", "variable": "SECRET", "variable_start": 0, "variable_end": 6, "value": "R15br4jtfcFbWh9G7EZTb6jR12c9We", "value_start": 30, "value_end": 60, "entropy": 4.34839 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "AUTH_CREDENTIAL_SECRET = f'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:4|RAW", "variable": "AUTH_CREDENTIAL_SECRET", "variable_start": 0, "variable_end": 22, "value": "RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth", "value_start": 27, "value_end": 90, "entropy": 5.0742 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "AUTH_CREDENTIAL_SECRET = f'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:4|RAW", "variable": "AUTH_CREDENTIAL_SECRET", "variable_start": 0, "variable_end": 22, "value": "RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth", "value_start": 27, "value_end": 90, "entropy": 5.0742 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "AUTH_CREDENTIAL_SECRET = f'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:4|RAW", "variable": "AUTH_CREDENTIAL_SECRET", "variable_start": 0, "variable_end": 22, "value": "RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth", "value_start": 27, "value_end": 90, "entropy": 5.0742 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "X_Auth_Tokens = ['\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\r\\n', '\\tf692a26934cc39327e912b102b5ed60d31da9a34\\r\\n']", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:10|RAW", "variable": "X_Auth_Tokens", "variable_start": 0, "variable_end": 13, "value": "\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\r\\n", "value_start": 18, "value_end": 64, "entropy": 4.01304 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "X_Auth_Tokens = ['\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\r\\n', '\\tf692a26934cc39327e912b102b5ed60d31da9a34\\r\\n']", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:10|RAW", "variable": "X_Auth_Tokens", "variable_start": 0, "variable_end": 13, "value": "\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\r\\n", "value_start": 18, "value_end": 64, "entropy": 4.01304 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "PASSWORD = '\\udf42\\ud834\\udd1e\\ud824\\ud837\\ud801\\ud852\\udf62'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:7|RAW", "variable": "PASSWORD", "variable_start": 0, "variable_end": 8, "value": "\\udf42\\ud834\\udd1e\\ud824\\ud837\\ud801\\ud852\\udf62", "value_start": 12, "value_end": 60, "entropy": 3.35801 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "SALT = b'\\xdf42\\xd834\\xdd1E\\xd824\\xd837\\xd801\\xd852\\xdf62'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:8|RAW", "variable": "SALT", "variable_start": 0, "variable_end": 4, "value": "\\xdf42\\xd834\\xdd1E\\xd824\\xd837\\xd801\\xd852\\xdf62", "value_start": 9, "value_end": 57, "entropy": 3.35801 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "a3f1ef0ff53236141253c0372", "value_start": 29, "value_end": 54, "entropy": 3.31908 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "a3f1ef0ff53236141253c0372", "value_start": 29, "value_end": 54, "entropy": 3.31908 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "a3f1ef0ff53236141253c0372", "value_start": 29, "value_end": 54, "entropy": 3.31908 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'", "line_num": 1, "path": "./tests/samples/sample.py", "info": "FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "a3f1ef0ff53236141253c0372", "value_start": 29, "value_end": 54, "entropy": 3.31908 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'", "line_num": 3, "path": "./tests/samples/sample.rtf", "info": "FILE:./tests/samples/sample.rtf|RTF", "variable": "postman-token", "variable_start": 7, "variable_end": 20, "value": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36", "value_start": 22, "value_end": 58, "entropy": 3.84286 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'", "line_num": 3, "path": "./tests/samples/sample.rtf", "info": "FILE:./tests/samples/sample.rtf|RTF", "variable": null, "variable_start": -2, "variable_end": -2, "value": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36", "value_start": 22, "value_end": 58, "entropy": 3.84286 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "line_num": 2, "path": "./tests/samples/sample.spec", "info": "FILE:./tests/samples/sample.spec|RAW", "variable": "token", "variable_start": 8, "variable_end": 13, "value": "4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "value_start": 14, "value_end": 78, "entropy": 3.73644 } ] }, { "rule": "PKCS without password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MIIBPQIBAAJBAK+iCL9cVcK4YKF6fijlA4S6cxD4O12htr3x2jgdPvic1p6b34ouAaI1c665CY3BxANPe+QpKdWyqf7MGK/Kh2cCAwEAAQJBAJBQyXVMTt/oluY4+89oluKKPiCUiFtglQMw5smzJlorURSAWbZMT/8lLZPK8rAPzJpRSgMsJ4bKq4f5SlnCz3ECIQDYzQ/fdC0wLantL1+gv5bd6T0Gy4p1f1L79005+67oWQIhAM9jc0KfY7r1M92VYYH3q9M21pS8U+dnUgBc8AFlnvW/AiEAzfNXXc2uU7M9Vm0Hadw3BE3aREc9G8s9WNCf0zItANkCIQCpUFcsgDaKz199u1R1KEAW24GKwsp5dMfk1ft4GIATvwIhAMyI+VDc34VuaYCcDB89Rv5x+hGtJTEpfq5KrVKKUdCJ", "line_num": 0, "path": "./tests/samples/sample.sqlite", "info": "FILE:./tests/samples/sample.sqlite|SQLite3.KEYS|BYTES:KEY|PKCS_PASSWORD:None", "variable": null, "variable_start": -2, "variable_end": -2, "value": "None", "value_start": -2, "value_end": -2, "entropy": 2.0 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "1d3e45d1-dead-beef-c0de-294622932701", "line_num": 1, "path": "./tests/samples/sample.sqlite", "info": "FILE:./tests/samples/sample.sqlite|SQLite3.USERS|STRING:USER|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1d3e45d1-dead-beef-c0de-294622932701", "value_start": 0, "value_end": 36, "entropy": 3.7262 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "PASSWORD = 'Dt1Js8m#1s'", "line_num": 1, "path": "./tests/samples/sample.sqlite", "info": "FILE:./tests/samples/sample.sqlite|SQLite3.USERS|KEYWORD", "variable": "PASSWORD", "variable_start": 0, "variable_end": 8, "value": "Dt1Js8m#1s", "value_start": 12, "value_end": 22, "entropy": 2.92193 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxa-FLYLIKEAGIREOGI-b1da04e31f", "line_num": 1, "path": "./tests/samples/sample.sqlite", "info": "FILE:./tests/samples/sample.sqlite|SQLite3.USERS|STRING:TOKEN|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxa-FLYLIKEAGIREOGI-b1da04e31f", "value_start": 0, "value_end": 31, "entropy": 4.3492 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "TOKEN = '1d3e45d1deadbeefc0de29beda932701'", "line_num": 2, "path": "./tests/samples/sample.sqlite", "info": "FILE:./tests/samples/sample.sqlite|SQLite3.USERS|KEYWORD", "variable": "TOKEN", "variable_start": 0, "variable_end": 5, "value": "1d3e45d1deadbeefc0de29beda932701", "value_start": 9, "value_end": 41, "entropy": 3.50705 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.984, "line_data_list": [ { "line": "{\"TOKEN\":\"b234fa59-dead-beef-cafe-91294cd81be4\"}", "line_num": 402, "path": "./tests/samples/sample.tiff", "info": "FILE:./tests/samples/sample.tiff|STRINGS", "variable": "TOKEN", "variable_start": 2, "variable_end": 7, "value": "b234fa59-dead-beef-cafe-91294cd81be4", "value_start": 10, "value_end": 46, "entropy": 3.66606 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"TOKEN\":\"b234fa59-dead-beef-cafe-91294cd81be4\"}", "line_num": 402, "path": "./tests/samples/sample.tiff", "info": "FILE:./tests/samples/sample.tiff|STRINGS", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b234fa59-dead-beef-cafe-91294cd81be4", "value_start": 10, "value_end": 46, "entropy": 3.66606 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "17205d79-dead-beef-a311-26312ad6ea36", "line_num": 1, "path": "./tests/samples/sample.tm7", "info": "FILE:./tests/samples/sample.tm7|TMX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "17205d79-dead-beef-a311-26312ad6ea36", "value_start": 0, "value_end": 36, "entropy": 3.60702 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "May password:6Ew1ThY0u", "line_num": 2, "path": "./tests/samples/sample.tm7", "info": "FILE:./tests/samples/sample.tm7|TMX", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "6Ew1ThY0u", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AKIAGIREOGIAXLSX4BT5", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|Sheet1x1:A1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAXLSX4BT5", "value_start": 0, "value_end": 20, "entropy": 3.64644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.986, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}t : AKIAGIREOGIAXLSX4BT5", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|ZIP:xl/sharedStrings.xml|XML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAXLSX4BT5", "value_start": 63, "value_end": 83, "entropy": 3.64644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.823, "line_data_list": [ { "line": "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}t : A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|ZIP:xl/sharedStrings.xml|XML", "variable": "PW", "variable_start": 76, "variable_end": 78, "value": "dipPr10Gg!", "value_start": 79, "value_end": 89, "entropy": 3.32193 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "API = 'AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d==='", "line_num": 1, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD", "variable": "API", "variable_start": 0, "variable_end": 3, "value": "AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d===", "value_start": 7, "value_end": 711, "entropy": 5.94887 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "AUTH = 'AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p='", "line_num": 2, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD", "variable": "AUTH", "variable_start": 0, "variable_end": 4, "value": "AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p=", "value_start": 8, "value_end": 733, "entropy": 5.94525 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "CREDENTIAL = 'AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI='", "line_num": 3, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD", "variable": "CREDENTIAL", "variable_start": 0, "variable_end": 10, "value": "AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI=", "value_start": 14, "value_end": 754, "entropy": 5.9484 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "KEY = 'AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU=='", "line_num": 4, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD", "variable": "KEY", "variable_start": 0, "variable_end": 3, "value": "AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU==", "value_start": 7, "value_end": 751, "entropy": 5.96239 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "SALT = 'AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0'", "line_num": 7, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD", "variable": "SALT", "variable_start": 0, "variable_end": 4, "value": "AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0", "value_start": 8, "value_end": 387, "entropy": 5.85103 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET = 'AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw=='", "line_num": 8, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD", "variable": "SECRET", "variable_start": 0, "variable_end": 6, "value": "AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw==", "value_start": 10, "value_end": 393, "entropy": 5.90879 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "TOKEN = 'AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA='", "line_num": 9, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD", "variable": "TOKEN", "variable_start": 0, "variable_end": 5, "value": "AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA=", "value_start": 9, "value_end": 392, "entropy": 5.89729 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": " __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "line_num": 13, "path": "./tests/samples/sealed_secrets.yaml", "info": "FILE:./tests/samples/sealed_secrets.yaml|RAW", "variable": "__NONCE", "variable_start": 4, "variable_end": 11, "value": "AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "value_start": 13, "value_end": 394, "entropy": 5.81513 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201},", "line_num": 3, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "Secret", "variable_start": 8, "variable_end": 14, "value": "333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201", "value_start": 23, "value_end": 99, "entropy": 3.10882 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 14, "value_end": 49, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 8, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 9, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 10, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 11, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 12, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", "line_num": 17, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path_1", "variable_start": 4, "variable_end": 34, "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", "line_num": 18, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path_2", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", "value_start": 36, "value_end": 76, "entropy": 4.78418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", "line_num": 19, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path_3", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", "line_num": 20, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path__", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", "value_start": 36, "value_end": 76, "entropy": 4.85306 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "LEGACY_GITHUB_SECRET = \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\"", "line_num": 1, "path": "./tests/samples/secret.groovy", "info": "FILE:./tests/samples/secret.groovy|RAW", "variable": "LEGACY_GITHUB_SECRET", "variable_start": 0, "variable_end": 20, "value": "fa87409ad3a4589fd279c501b3d2e174855ee9f4", "value_start": 24, "value_end": 64, "entropy": 3.80869 } ] }, { "rule": "SendGrid API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SG.gireogigireogigi.gireogigireogigi", "line_num": 1, "path": "./tests/samples/sendgrid_api_key", "info": "FILE:./tests/samples/sendgrid_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SG.gireogigireogigi.gireogigireogigi", "value_start": 0, "value_end": 36, "entropy": 2.60219 } ] }, { "rule": "Sentry Organization Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "line_num": 1, "path": "./tests/samples/sentry", "info": "FILE:./tests/samples/sentry|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "value_start": 0, "value_end": 179, "entropy": 5.53873 } ] }, { "rule": "Sentry User Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/sentry", "info": "FILE:./tests/samples/sentry|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 71, "entropy": 4.14384 } ] }, { "rule": "Shopify Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"shopyfy_k\": \"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\",", "line_num": 1, "path": "./tests/samples/shopify_token", "info": "FILE:./tests/samples/shopify_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 18, "value_end": 56, "entropy": 3.80396 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "line_num": 1, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "value_start": 0, "value_end": 97, "entropy": 4.32216 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "line_num": 2, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "value_start": 0, "value_end": 56, "entropy": 4.71996 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "line_num": 3, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "value_start": 0, "value_end": 171, "entropy": 4.93756 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "line_num": 4, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "value_start": 0, "value_end": 153, "entropy": 4.95538 } ] }, { "rule": "Slack Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"hook\": \"https://hooks.slack.com/services/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\",", "line_num": 1, "path": "./tests/samples/slack_webhook.template", "info": "FILE:./tests/samples/slack_webhook.template|RAW", "variable": "hooks.slack.com/services", "variable_start": 21, "variable_end": 45, "value": "/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg", "value_start": 45, "value_end": 93, "entropy": 4.76184 } ] }, { "rule": "Azure Secret Value", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "line_num": 1, "path": "./tests/samples/small.pdf", "info": "FILE:./tests/samples/small.pdf|PDF:1|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "value_start": 0, "value_end": 40, "entropy": 4.75306 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',", "line_num": 1, "path": "./tests/samples/sonarqube", "info": "FILE:./tests/samples/sonarqube|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab", "value_start": 16, "value_end": 60, "entropy": 4.10151 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "line_num": 2, "path": "./tests/samples/sonarqube", "info": "FILE:./tests/samples/sonarqube|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "value_start": 14, "value_end": 58, "entropy": 3.954 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.918, "line_data_list": [ { "line": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';", "line_num": 1, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY", "variable_start": 0, "variable_end": 70, "value": "SqLpa5sW0rD", "value_start": 72, "value_end": 83, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.917, "line_data_list": [ { "line": "'create user name identified by 'SqLpa5sW0rD' --", "line_num": 2, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "create user name identified by", "variable_start": 1, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 3, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`", "line_num": 4, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER 'haproxy'@'%' IDENTIFIED BY", "variable_start": 2, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 5, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.914, "line_data_list": [ { "line": "CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 8, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 0, "variable_end": 39, "value": "SqLpa5sW0rD", "value_start": 41, "value_end": 52, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 26, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 36, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.992, "line_data_list": [ { "line": "ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\"", "line_num": 10, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER ROLE postgres PASSWORD", "variable_start": 0, "variable_end": 28, "value": "SqLpa5sW0rD", "value_start": 30, "value_end": 41, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 11, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER username WITH PASSWORD", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 27, "variable_end": 35, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 37, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;", "line_num": 13, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER chuck WITH PASSWORD", "variable_start": 0, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;", "line_num": 14, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD", "variable_start": 0, "variable_end": 45, "value": "SqLpa5sW0rD", "value_start": 47, "value_end": 58, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 15, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER myuser WITH PASSWORD", "variable_start": 0, "variable_end": 32, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 16, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER username WITH PASSWORD", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 36, "value_end": 47, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 17, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 47, "value": "SqLpa5sW0rD", "value_start": 49, "value_end": 60, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.899, "line_data_list": [ { "line": "ALTER USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 19, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.991, "line_data_list": [ { "line": "CREATE USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 20, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.997, "line_data_list": [ { "line": "CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 21, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 48, "value": "SqLpa5sW0rD", "value_start": 50, "value_end": 61, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "mysql -u root -pdbadmin -e \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\"\u2013 ", "line_num": 22, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY", "variable_start": 28, "variable_end": 77, "value": "SqLpa5sW0rD", "value_start": 79, "value_end": 90, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "-c \"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\"", "line_num": 23, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE ROLE scram_test login password", "variable_start": 4, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.995, "line_data_list": [ { "line": "CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;", "line_num": 24, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE ROLE app_admin WITH LOGIN PASSWORD", "variable_start": 0, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 42, "value_end": 53, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';", "line_num": 25, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE ROLE flask_admin_geo LOGIN PASSWORD", "variable_start": 0, "variable_end": 42, "value": "SqLpa5sW0rD", "value_start": 44, "value_end": 55, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.702, "line_data_list": [ { "line": "create role forum_example_graph_demo login password 'SqLpa5sW0rD';", "line_num": 26, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "create role forum_example_graph_demo login password", "variable_start": 0, "variable_end": 51, "value": "SqLpa5sW0rD", "value_start": 53, "value_end": 64, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.722, "line_data_list": [ { "line": "create role forum_example_graph login password 'SqLpa5sW0rD';", "line_num": 27, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "create role forum_example_graph login password", "variable_start": 0, "variable_end": 46, "value": "SqLpa5sW0rD", "value_start": 48, "value_end": 59, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1", "line_num": 31, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS", "variable_start": 0, "variable_end": 70, "value": "*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409", "value_start": 72, "value_end": 113, "entropy": 3.78769 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.849, "line_data_list": [ { "line": "sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\; >>tmp.sql;'", "line_num": 32, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER typeorm_mg IDENTIFIED BY", "variable_start": 12, "variable_end": 48, "value": "SqLpa5sW0rD\\;", "value_start": 49, "value_end": 62, "entropy": 3.70044 } ] }, { "rule": "Square Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"SQT\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",", "line_num": 1, "path": "./tests/samples/square_access_token", "info": "FILE:./tests/samples/square_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF", "value_start": 12, "value_end": 76, "entropy": 4.66018 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sq0atp-GIREOGICR0CKLE12W45A78", "line_num": 1, "path": "./tests/samples/square_client_id", "info": "FILE:./tests/samples/square_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0atp-GIREOGICR0CKLE12W45A78", "value_start": 0, "value_end": 29, "entropy": 4.44419 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "20241204_112356 Colored line: \"\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\u001b[0m\";", "line_num": 1, "path": "./tests/samples/square_oauth_secret", "info": "FILE:./tests/samples/square_oauth_secret|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI", "value_start": 36, "value_end": 86, "entropy": 4.75856 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "line_num": 3, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "line_num": 4, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "line_num": 5, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "value_start": 0, "value_end": 32, "entropy": 4.53891 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "line_num": 6, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "value_start": 0, "value_end": 107, "entropy": 5.24966 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "line_num": 7, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "value_start": 0, "value_end": 107, "entropy": 5.44092 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 8, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 107, "entropy": 5.50064 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "line_num": 9, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "value_start": 0, "value_end": 38, "entropy": 4.47135 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "line_num": 10, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "value_start": 0, "value_end": 38, "entropy": 4.82687 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = 'Axt4T0eO0lm9sS=='", "line_num": 2, "path": "./tests/samples/struct.json", "info": "FILE:./tests/samples/struct.json|STRUCT|KEYWORD", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Axt4T0eO0lm9sS==", "value_start": 12, "value_end": 28, "entropy": 3.75 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.902, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd81", "line_num": 19, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd81", "value_start": 8, "value_end": 44, "entropy": 3.66606 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.884, "line_data_list": [ { "line": "secret : 5EcRe7_r0", "line_num": 20, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "5EcRe7_r0", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.961, "line_data_list": [ { "line": "key : AK1AGIREOGIAWSKEY555", "line_num": 21, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "AK1AGIREOGIAWSKEY555", "value_start": 6, "value_end": 26, "entropy": 3.44644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password : Pas1wrD0", "line_num": 22, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Pas1wrD0", "value_start": 11, "value_end": 19, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.922, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd82", "line_num": 25, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd82", "value_start": 8, "value_end": 44, "entropy": 3.68703 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "key : SDFHBH2398SG5VF62VZVQFG2TYGVF9WYSGR", "line_num": 27, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "SDFHBH2398SG5VF62VZVQFG2TYGVF9WYSGR", "value_start": 6, "value_end": 41, "entropy": 4.00043 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key : 3TJDSLKGDFG4MTB34UHWYYSDFHKSDKJH34S", "line_num": 29, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "3TJDSLKGDFG4MTB34UHWYYSDFHKSDKJH34S", "value_start": 6, "value_end": 41, "entropy": 3.84301 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password : Pas1wrD2", "line_num": 30, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Pas1wrD2", "value_start": 11, "value_end": 19, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.919, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd83", "line_num": 34, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd83", "value_start": 8, "value_end": 44, "entropy": 3.74259 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.676, "line_data_list": [ { "line": "key : 3216-4010-0284-8946", "line_num": 37, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "3216-4010-0284-8946", "value_start": 6, "value_end": 25, "entropy": 3.0761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password : Pas1wrD3", "line_num": 38, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Pas1wrD3", "value_start": 11, "value_end": 19, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.94, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd85", "line_num": 42, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd85", "value_start": 8, "value_end": 44, "entropy": 3.74259 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.95, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd86", "line_num": 43, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd86", "value_start": 8, "value_end": 44, "entropy": 3.74259 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.941, "line_data_list": [ { "line": "secret : 5EcRe7_r4", "line_num": 44, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "5EcRe7_r4", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "key : 741852-321654-963852-654913", "line_num": 45, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "741852-321654-963852-654913", "value_start": 6, "value_end": 33, "entropy": 3.2538 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.932, "line_data_list": [ { "line": "key : 184824-202847-623730-837462", "line_num": 46, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "184824-202847-623730-837462", "value_start": 6, "value_end": 33, "entropy": 3.05584 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password : Pas1wrD4", "line_num": 47, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Pas1wrD4", "value_start": 11, "value_end": 19, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.952, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd87", "line_num": 51, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd87", "value_start": 8, "value_end": 44, "entropy": 3.66606 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.944, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd88", "line_num": 52, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd88", "value_start": 8, "value_end": 44, "entropy": 3.68703 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.875, "line_data_list": [ { "line": "secret : 5EcRe7_r5", "line_num": 53, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "5EcRe7_r5", "value_start": 9, "value_end": 18, "entropy": 2.9477 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "key : 321654-741852-963852-654980", "line_num": 54, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "321654-741852-963852-654980", "value_start": 6, "value_end": 33, "entropy": 3.35583 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "key : 321654-741852-963852-654981", "line_num": 55, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "321654-741852-963852-654981", "value_start": 6, "value_end": 33, "entropy": 3.2538 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password : Pas1wrD5", "line_num": 56, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Pas1wrD5", "value_start": 11, "value_end": 19, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.947, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd89", "line_num": 60, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd89", "value_start": 8, "value_end": 44, "entropy": 3.65245 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.91, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd80", "line_num": 61, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd80", "value_start": 8, "value_end": 44, "entropy": 3.74259 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "key : 321654-963852-654987-741851", "line_num": 62, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "321654-963852-654987-741851", "value_start": 6, "value_end": 33, "entropy": 3.28176 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "key : 321654-963852-654987-741853", "line_num": 63, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "321654-963852-654987-741853", "value_start": 6, "value_end": 33, "entropy": 3.28176 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password : Pas1wrD67", "line_num": 64, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Pas1wrD67", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.813, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd11", "line_num": 67, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd11", "value_start": 8, "value_end": 44, "entropy": 3.57592 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.876, "line_data_list": [ { "line": "token : bace4d19-fa7e-beer-care-9129474bcd22", "line_num": 68, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d19-fa7e-beer-care-9129474bcd22", "value_start": 8, "value_end": 44, "entropy": 3.61051 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "key : 654987-321654-963852-741851", "line_num": 69, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "654987-321654-963852-741851", "value_start": 6, "value_end": 33, "entropy": 3.28176 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "key : 654987-321654-963852-741852", "line_num": 70, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "654987-321654-963852-741852", "value_start": 6, "value_end": 33, "entropy": 3.28176 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "key : 654987-321654-963852-741853", "line_num": 71, "path": "./tests/samples/table.html", "info": "FILE:./tests/samples/table.html|HTML", "variable": "key", "variable_start": 0, "variable_end": 3, "value": "654987-321654-963852-741853", "value_start": 6, "value_end": 33, "entropy": 3.28176 } ] }, { "rule": "Telegram Bot API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "line_num": 1, "path": "./tests/samples/telegram_api_key", "info": "FILE:./tests/samples/telegram_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "value_start": 0, "value_end": 45, "entropy": 4.94174 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "td : Password: MU$T6Ef09#D!", "line_num": 1, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|XML", "variable": "Password", "variable_start": 5, "variable_end": 13, "value": "MU$T6Ef09#D!", "value_start": 26, "value_end": 38, "entropy": 3.58496 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "password : 0dm1nk0", "line_num": 29, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "0dm1nk0", "value_start": 11, "value_end": 18, "entropy": 2.52164 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret : BNbNbws73bdhss329ssakKhds120384", "line_num": 32, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "BNbNbws73bdhss329ssakKhds120384", "value_start": 9, "value_end": 40, "entropy": 3.88905 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password : Cr3DeHTbIal", "line_num": 42, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Cr3DeHTbIal", "value_start": 11, "value_end": 22, "entropy": 3.45943 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret : Ndjbwu88s22ygavsdhgt5454v3h1x", "line_num": 45, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "Ndjbwu88s22ygavsdhgt5454v3h1x", "value_start": 9, "value_end": 38, "entropy": 4.23729 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "token : H72gsdv2dswPneHduwhfd", "line_num": 65, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "H72gsdv2dswPneHduwhfd", "value_start": 8, "value_end": 29, "entropy": 3.63041 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.721, "line_data_list": [ { "line": "password : p@$$w0Rd42", "line_num": 71, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "p@$$w0Rd42", "value_start": 11, "value_end": 21, "entropy": 3.12193 } ] }, { "rule": "Telegram Bot API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "line_num": 76, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "value_start": 0, "value_end": 45, "entropy": 4.94174 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "# 94 ya29.dshMb48ehfXwydAj34D32J", "line_num": 83, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.dshMb48ehfXwydAj34D32J", "value_start": 5, "value_end": 32, "entropy": 4.31044 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 84, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 5, "value_end": 76, "entropy": 3.6568 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "# 94 ya29.dshMb48ehfXwydAj34D32J", "line_num": 86, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.dshMb48ehfXwydAj34D32J", "value_start": 5, "value_end": 32, "entropy": 4.31044 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 87, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 5, "value_end": 76, "entropy": 3.6568 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "line_num": 89, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 35, "value_end": 122, "entropy": 4.93612 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "line_num": 94, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 35, "value_end": 122, "entropy": 4.93612 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.994, "line_data_list": [ { "line": "ALTER\tUSER\tdetector\tIDENTIFIED\tBY\tSqLpa5sW0rD4;", "line_num": 110, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "ALTER\tUSER\tdetector\tIDENTIFIED\tBY", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD4", "value_start": 34, "value_end": 46, "entropy": 3.58496 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "token in zip: eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 1, "path": "./tests/samples/test2.eml", "info": "FILE:./tests/samples/test2.eml|EML-DATA|ZIP:token.txt|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 14, "value_end": 108, "entropy": 4.00615 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token in zip: eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 1, "path": "./tests/samples/test2.eml", "info": "FILE:./tests/samples/test2.eml|EML-DATA|ZIP:token.txt|RAW", "variable": "token in zip", "variable_start": 0, "variable_end": 12, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 14, "value_end": 108, "entropy": 4.00615 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 8, "path": "./tests/samples/test2.eml", "info": "FILE:./tests/samples/test2.eml|EML-TEXT", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 8, "path": "./tests/samples/test2.eml", "info": "FILE:./tests/samples/test2.eml|EML-TEXT", "variable": "token in text", "variable_start": 0, "variable_end": 13, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "line_num": 1, "path": "./tests/samples/together", "info": "FILE:./tests/samples/together|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "value_start": 0, "value_end": 50, "entropy": 5.13366 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "line_num": 2, "path": "./tests/samples/together", "info": "FILE:./tests/samples/together|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "value_start": 0, "value_end": 50, "entropy": 5.16386 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_token = \"G1Re06G1BdgNseiJDN21Z094M\"", "line_num": 1, "path": "./tests/samples/token.toml", "info": "FILE:./tests/samples/token.toml|RAW", "variable": "gi_reo_gi_token", "variable_start": 0, "variable_end": 15, "value": "G1Re06G1BdgNseiJDN21Z094M", "value_start": 19, "value_end": 44, "entropy": 4.13366 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo", "line_num": 2, "path": "./tests/samples/token.toml", "info": "FILE:./tests/samples/token.toml|RAW", "variable": "DemoToken", "variable_start": 8, "variable_end": 17, "value": "Nxs094M3ed2s1Re0F4M3ed2GZ8M=", "value_start": 19, "value_end": 47, "entropy": 4.03915 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "tp_token_value=\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\"", "line_num": 4, "path": "./tests/samples/token.toml", "info": "FILE:./tests/samples/token.toml|RAW", "variable": "tp_token_value", "variable_start": 0, "variable_end": 14, "value": "b035d48j9X2dfjF0hb9sd8Guf5hWu2ia", "value_start": 16, "value_end": 48, "entropy": 4.22641 } ] }, { "rule": "Tavily API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # TP", "line_num": 1, "path": "./tests/samples/tvly", "info": "FILE:./tests/samples/tvly|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.84432 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SK4D2F64E2A108CD72F648B1984C3B5A13", "line_num": 1, "path": "./tests/samples/twilio_credentials_p", "info": "FILE:./tests/samples/twilio_credentials_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SK4D2F64E2A108CD72F648B1984C3B5A13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AC4d2f64e2a108cd72f648b1984c3b5a13", "line_num": 2, "path": "./tests/samples/twilio_credentials_p", "info": "FILE:./tests/samples/twilio_credentials_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AC4d2f64e2a108cd72f648b1984c3b5a13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');", "line_num": 1, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "dbconnection://", "variable_start": 32, "variable_end": 47, "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, "entropy": 3.58496 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", "line_num": 3, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "Credential", "variable_start": 38, "variable_end": 48, "value": "546DFS64N90P3AW7DX%2Fkeep%26cut", "value_start": 49, "value_end": 80, "entropy": 4.41372 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "key", "variable_start": 36, "variable_end": 39, "value": "3487263-2384579834-234732875-345", "value_start": 40, "value_end": 72, "entropy": 2.97591 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "Credential", "variable_start": 6, "variable_end": 16, "value": "546DFS64N90P3AW7DX", "value_start": 17, "value_end": 35, "entropy": 3.83659 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", "line_num": 13, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "smtps://", "variable_start": 18, "variable_end": 26, "value": "FnD83JZs", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url3d = \"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\";", "line_num": 19, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "token", "variable_start": 65, "variable_end": 70, "value": "h1d3Me4ch534d801sl3jdk", "value_start": 73, "value_end": 95, "entropy": 3.75444 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if (password !== \"PaS5w0rD2#\"){", "line_num": 21, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "PaS5w0rD2#", "value_start": 18, "value_end": 28, "entropy": 3.32193 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "{\"line\": \"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\"}", "line_num": 25, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "mongodb://", "variable_start": 15, "variable_end": 25, "value": "p4Dsr8b", "value_start": 34, "value_end": 41, "entropy": 2.80735 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", "line_num": 1, "path": "./tests/samples/uuid", "info": "FILE:./tests/samples/uuid|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.58954 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "bace4d19-fa7e-beef-cafe-9129474bcd81", "line_num": 1, "path": "./tests/samples/uuid-update.patch", "info": "FILE:./tests/samples/uuid-update.patch|PATCH:uuid:deleted", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.58954 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "bace4d19-fa7e-dead-beef-9129474bcd81", "line_num": 1, "path": "./tests/samples/uuid-update.patch", "info": "FILE:./tests/samples/uuid-update.patch|PATCH:uuid:added", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-dead-beef-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.57592 } ] }, { "rule": "Vercel Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "line_num": 1, "path": "./tests/samples/vercel", "info": "FILE:./tests/samples/vercel|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "value_start": 0, "value_end": 60, "entropy": 5.23581 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wxe191bc54fc7d529a", "line_num": 1, "path": "./tests/samples/wechat_p", "info": "FILE:./tests/samples/wechat_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wxe191bc54fc7d529a", "value_start": 0, "value_end": 18, "entropy": 3.72548 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx2274a335e18222d6", "line_num": 2, "path": "./tests/samples/wechat_p", "info": "FILE:./tests/samples/wechat_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx2274a335e18222d6", "value_start": 0, "value_end": 18, "entropy": 3.41383 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx4d82d07e3eb5ba84", "line_num": 3, "path": "./tests/samples/wechat_p", "info": "FILE:./tests/samples/wechat_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx4d82d07e3eb5ba84", "value_start": 0, "value_end": 18, "entropy": 3.61437 } ] }, { "rule": "X AI API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "line_num": 1, "path": "./tests/samples/xai", "info": "FILE:./tests/samples/xai|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "value_start": 0, "value_end": 84, "entropy": 5.35637 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "line_num": 1, "path": "./tests/samples/xml_data.xml", "info": "FILE:./tests/samples/xml_data.xml|XML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn", "value_start": 8, "value_end": 58, "entropy": 4.83327 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "token : \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\"", "line_num": 1, "path": "./tests/samples/xml_data.xml", "info": "FILE:./tests/samples/xml_data.xml|XML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "value_start": 9, "value_end": 115, "entropy": 5.09578 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/ DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5 BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0 caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "line_num": 1, "path": "./tests/samples/xml_data.xml", "info": "FILE:./tests/samples/xml_data.xml|XML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/ DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5 BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0 caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "value_start": 7, "value_end": 479, "entropy": 5.73206 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "password : Password for authorization BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", "line_num": 1, "path": "./tests/samples/xml_password.xml", "info": "FILE:./tests/samples/xml_password.xml|XML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d59-fa7e-beef-cafe-9129474bcd81", "value_start": 51, "value_end": 87, "entropy": 3.66606 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.857, "line_data_list": [ { "line": "password : cackle!", "line_num": 1, "path": "./tests/samples/xml_password.xml", "info": "FILE:./tests/samples/xml_password.xml|XML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 11, "value_end": 18, "entropy": 2.52164 } ] } ] ================================================ FILE: tests/data/doc.json ================================================ [ { "rule": "1Password Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "line_num": 1, "path": "./tests/samples/1password", "info": "FILE:./tests/samples/1password|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "value_start": 0, "value_end": 656, "entropy": 5.94326 } ] }, { "rule": "BASE64 encoded PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg", "line_num": 1, "path": "./tests/samples/LS0t_p", "info": "FILE:./tests/samples/LS0t_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg", "value_start": 0, "value_end": 3078, "entropy": 5.49785 } ] }, { "rule": "Akamai Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "line_num": 1, "path": "./tests/samples/akamai", "info": "FILE:./tests/samples/akamai|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "value_start": 3, "value_end": 41, "entropy": 4.15557 } ] }, { "rule": "Anthropic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "line_num": 1, "path": "./tests/samples/antrhropic", "info": "FILE:./tests/samples/antrhropic|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "value_start": 0, "value_end": 107, "entropy": 5.42952 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "line_num": 1, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "entropy": 5.77034 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "line_num": 2, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "value_start": 20, "value_end": 213, "entropy": 5.78724 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "line_num": 3, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "value_start": 22, "value_end": 216, "entropy": 5.76529 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "line_num": 4, "path": "./tests/samples/atlassian_pat", "info": "FILE:./tests/samples/atlassian_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "value_start": 24, "value_end": 218, "entropy": 5.76679 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "FILE:./tests/samples/auth.hs|RAW", "variable": "NTLM", "variable_start": 15, "variable_end": 19, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Basic Authorization", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "FILE:./tests/samples/auth_n.template|RAW", "variable": "Basic", "variable_start": 24, "variable_end": 29, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "FILE:./tests/samples/auth_n.template|RAW", "variable": "Bearer", "variable_start": 24, "variable_end": 30, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A3T1DJ4IS97DLLTH2SZ3", "value_start": 56, "value_end": 76, "entropy": 3.82193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 14, "value_end": 34, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY45X", "value_start": 35, "value_end": 55, "entropy": 3.54644 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "line_num": 8, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "value_start": 0, "value_end": 48, "entropy": 4.88684 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "line_num": 9, "path": "./tests/samples/aws_client_id", "info": "FILE:./tests/samples/aws_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "value_start": 0, "value_end": 128, "entropy": 5.61388 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"AwsAccessID\": \"AKIAGIREOGIAWSKEY123\",", "line_num": 3, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "Key", "variable_start": 18, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "eaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIg", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY323", "value_start": 191, "value_end": 211, "entropy": 3.44644 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoR", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "Credential", "variable_start": 180, "variable_end": 190, "value": "AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy", "value_start": 191, "value_end": 251, "entropy": 4.6314 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "tial=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "Key", "variable_start": 258, "variable_end": 261, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI", "value_start": 262, "value_end": 313, "entropy": 4.96135 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "tial=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "Key", "variable_start": 258, "variable_end": 261, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "value_start": 262, "value_end": 314, "entropy": 5.00304 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-Si", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gireogi323.s3.amazonaws.com", "value_start": 32, "value_end": 59, "entropy": 3.75416 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": "Key", "variable_start": 18, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"AwsAccessID\": \"AKIAGIREOGIAWSKEY321\"", "line_num": 53, "path": "./tests/samples/aws_multi.json", "info": "FILE:./tests/samples/aws_multi.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 }, { "line": "\"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "AccessKeyId", "variable_start": 5, "variable_end": 16, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "Key", "variable_start": 17, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"Token\" : \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 9, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "Token", "variable_start": 5, "variable_end": 10, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 15, "value_end": 66, "entropy": 4.96135 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"Token\" : \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 9, "path": "./tests/samples/aws_multi.md", "info": "FILE:./tests/samples/aws_multi.md|RAW", "variable": "Token", "variable_start": 5, "variable_end": 10, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 15, "value_end": 66, "entropy": 4.96135 } ] }, { "rule": "AWS MWS Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "FILE:./tests/samples/aws_mws_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.855, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "FILE:./tests/samples/aws_mws_key|RAW", "variable": "AWS_MWS_KEY", "variable_start": 0, "variable_end": 11, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"url\" : \"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\"}", "line_num": 1, "path": "./tests/samples/aws_s3_bucket", "info": "FILE:./tests/samples/aws_s3_bucket|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "circle-production-action-output.s3.amazonaws.com", "value_start": 18, "value_end": 66, "entropy": 4.02467 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "Azure Storage Account Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "line_num": 5, "path": "./tests/samples/azure_access_token", "info": "FILE:./tests/samples/azure_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "value_start": 2, "value_end": 90, "entropy": 4.22483 } ] }, { "rule": "Azure Secret Value", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "client_srt = \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\";", "line_num": 1, "path": "./tests/samples/azure_secret_value", "info": "FILE:./tests/samples/azure_secret_value|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "value_start": 14, "value_end": 54, "entropy": 4.75306 } ] }, { "rule": "Bitbucket HTTP Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"bitbucket\" : \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\"", "line_num": 1, "path": "./tests/samples/bitbuckert_http_access_token", "info": "FILE:./tests/samples/bitbuckert_http_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l", "value_start": 15, "value_end": 64, "entropy": 4.94084 } ] }, { "rule": "Bitbucket App Password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "line_num": 1, "path": "./tests/samples/bitbucket_app_password", "info": "FILE:./tests/samples/bitbucket_app_password|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "value_start": 11, "value_end": 47, "entropy": 4.5934 } ] }, { "rule": "Bitbucket Repository Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "FILE:./tests/samples/bitbucket_repository_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "FILE:./tests/samples/bitbucket_repository_access_token|RAW", "variable": "Token", "variable_start": 29, "variable_end": 34, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "FILE:./tests/samples/bitbucket_repository_access_token|RAW", "variable": "Token", "variable_start": 29, "variable_end": 34, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Brevo API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/brevo", "info": "FILE:./tests/samples/brevo|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 89, "entropy": 4.64688 } ] }, { "rule": "JKS sensitive data with password 'changeit'", "severity": "low", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "'changeit'", "line_num": 0, "path": "./tests/samples/changeit_crt.jks", "info": "FILE:./tests/samples/changeit_crt.jks|JKS:sensitive data", "variable": null, "variable_start": -2, "variable_end": -2, "value": "'changeit'", "value_start": 0, "value_end": 10, "entropy": 3.12193 } ] }, { "rule": "JKS private key with password 'changeme'", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "'changeme'", "line_num": 0, "path": "./tests/samples/changeme_key.jks", "info": "FILE:./tests/samples/changeme_key.jks|JKS:default password", "variable": null, "variable_start": -2, "variable_end": -2, "value": "'changeme'", "value_start": 0, "value_end": 10, "entropy": 2.92193 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg", "line_num": 1, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "passphrase", "variable_start": 16, "variable_end": 26, "value": "N1DdkUD3E73", "value_start": 27, "value_end": 38, "entropy": 3.0958 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "mysql -u root --password Sne3sd8AZjq", "line_num": 2, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "root", "variable_start": 9, "variable_end": 13, "value": "--password", "value_start": 14, "value_end": 24, "entropy": 2.92193 }, { "line": "mysql -u root --password Sne3sd8AZjq", "line_num": 2, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "Sne3sd8AZjq", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "mysql -u root --password Sne3sd8AZjq", "line_num": 2, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "Sne3sd8AZjq", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Domain 'localhost' -Password 'Sjdn43ss@!'", "line_num": 3, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "Password", "variable_start": 21, "variable_end": 29, "value": "Sjdn43ss@!", "value_start": 31, "value_end": 41, "entropy": 3.12193 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--oauth2-bearer \"eZs2fjkjD8hUcsQ37b8zHig==\" \\", "line_num": 7, "path": "./tests/samples/cmd_credential", "info": "FILE:./tests/samples/cmd_credential|RAW", "variable": "oauth2-bearer", "variable_start": 6, "variable_end": 19, "value": "eZs2fjkjD8hUcsQ37b8zHig==", "value_start": 21, "value_end": 46, "entropy": 4.32386 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 0.918, "line_data_list": [ { "line": "ConvertTo-SecureString -String -Force dsjUE#$gds8s", "line_num": 1, "path": "./tests/samples/cmd_secure_string", "info": "FILE:./tests/samples/cmd_secure_string|RAW", "variable": "ConvertTo-SecureString -String -Force", "variable_start": 0, "variable_end": 37, "value": "dsjUE#$gds8s", "value_start": 38, "value_end": 50, "entropy": 3.02206 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"ConvertTo-SecureString \\\"4yd21JKH~GE8dkd\\\"\"", "line_num": 2, "path": "./tests/samples/cmd_secure_string", "info": "FILE:./tests/samples/cmd_secure_string|RAW", "variable": "ConvertTo-SecureString", "variable_start": 1, "variable_end": 23, "value": "4yd21JKH~GE8dkd", "value_start": 26, "value_end": 41, "entropy": 3.5899 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "gi_reo_gi_credential = \"K2u6mFw8wJOsAf\"", "line_num": 1, "path": "./tests/samples/credential.hs", "info": "FILE:./tests/samples/credential.hs|RAW", "variable": "gi_reo_gi_credential", "variable_start": 0, "variable_end": 20, "value": "K2u6mFw8wJOsAf", "value_start": 24, "value_end": 38, "entropy": 3.6645 } ] }, { "rule": "CURL User Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -X PUT -u \"admin:dG9rZW4g\" https://127.0.0.1 # TP", "line_num": 1, "path": "./tests/samples/curl_user_password", "info": "FILE:./tests/samples/curl_user_password|RAW", "variable": "curl", "variable_start": 0, "variable_end": 4, "value": "dG9rZW4g", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DeepSeek API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": ">>>\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\u001b[0m<<<", "line_num": 1, "path": "./tests/samples/deepseek", "info": "FILE:./tests/samples/deepseek|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-615ef152bf865a131f88b23571dc4ee6", "value_start": 8, "value_end": 43, "entropy": 3.85416 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';", "line_num": 1, "path": "./tests/samples/digital_ocean_oauth_access_token", "info": "FILE:./tests/samples/digital_ocean_oauth_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c", "value_start": 14, "value_end": 85, "entropy": 4.05874 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 1, "path": "./tests/samples/digital_ocean_pat", "info": "FILE:./tests/samples/digital_ocean_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 0, "value_end": 71, "entropy": 3.6568 } ] }, { "rule": "Discord Bot Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "line_num": 1, "path": "./tests/samples/discord_bot_token", "info": "FILE:./tests/samples/discord_bot_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "value_start": 0, "value_end": 72, "entropy": 5.16257 } ] }, { "rule": "Discord Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "line_num": 1, "path": "./tests/samples/discord_webhook", "info": "FILE:./tests/samples/discord_webhook|RAW", "variable": "discordapp.com/api/webhooks", "variable_start": 10, "variable_end": 37, "value": "/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "value_start": 37, "value_end": 125, "entropy": 5.23454 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "the password is incorrect", "line_num": 1, "path": "./tests/samples/doc_credentials_n", "info": "FILE:./tests/samples/doc_credentials_n|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "incorrect", "value_start": 16, "value_end": 25, "entropy": 2.72548 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"UserKeyword\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\"", "line_num": 5, "path": "./tests/samples/doc_credentials_n", "info": "FILE:./tests/samples/doc_credentials_n|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1328E04-88B6-4E2A-A5C0-A4D9B21754C4", "value_start": 16, "value_end": 52, "entropy": 3.8055 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "my password is 237dg546fs9", "line_num": 1, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "password", "variable_start": 3, "variable_end": 11, "value": "237dg546fs9", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "line_num": 2, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "value_start": 17, "value_end": 46, "entropy": 4.21126 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "password:!Dd5G4s9", "line_num": 3, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "!Dd5G4s9", "value_start": 9, "value_end": 17, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "password:!Dd5G4s9", "line_num": 3, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "!Dd5G4s9", "value_start": 9, "value_end": 17, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "line_num": 4, "path": "./tests/samples/doc_credentials_p", "info": "FILE:./tests/samples/doc_credentials_p|RAW", "variable": "LONG_CREDENTIAL", "variable_start": 0, "variable_end": 15, "value": "AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "value_start": 17, "value_end": 5485, "entropy": 5.99409 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.441, "line_data_list": [ { "line": "SECRET = getenv(\"GEHE1MN15\", '')", "line_num": 2, "path": "./tests/samples/doc_get_n", "info": "FILE:./tests/samples/doc_get_n|RAW", "variable": "SECRET", "variable_start": 0, "variable_end": 6, "value": "getenv(\"GEHE1MN15\",", "value_start": 9, "value_end": 28, "entropy": 3.82687 } ] }, { "rule": "DOC_GET", "severity": "medium", "confidence": "moderate", "ml_probability": 0.952, "line_data_list": [ { "line": "if SECRET := getenv(\"CEKPET\", \"GEHEIMN1S\"):", "line_num": 1, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": "SECRET :=", "variable_start": 3, "variable_end": 12, "value": "GEHEIMN1S", "value_start": 31, "value_end": 40, "entropy": 2.9477 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.007, "line_data_list": [ { "line": "if SECRET := getenv(\"CEKPET\", \"GEHEIMN1S\"):", "line_num": 1, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": "SECRET", "variable_start": 3, "variable_end": 9, "value": "getenv(\"CEKPET\",", "value_start": 13, "value_end": 29, "entropy": 3.625 } ] }, { "rule": "DOC_GET", "severity": "medium", "confidence": "moderate", "ml_probability": 0.001, "line_data_list": [ { "line": "create(getenv(\\\"SECRET\\\", \\\"TeRcE52\\\"))", "line_num": 2, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": null, "variable_start": -1, "variable_end": -1, "value": "TeRcE52", "value_start": 28, "value_end": 35, "entropy": 2.80735 } ] }, { "rule": "DOC_GET", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "{\"id\" : getenv(SECRET, \"TeRcE'5\"), \"workaround\": \"confuses csv parser\"}", "line_num": 3, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": null, "variable_start": -1, "variable_end": -1, "value": "TeRcE'5", "value_start": 24, "value_end": 31, "entropy": 2.80735 } ] }, { "rule": "DOC_GET", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password\uc124\uc815\uc740getenv(\"DBPW\", b\"GEHE1MNIS\")", "line_num": 4, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": "password\uc124\uc815\uc740", "variable_start": 0, "variable_end": 11, "value": "GEHE1MNIS", "value_start": 28, "value_end": 37, "entropy": 2.9477 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.466, "line_data_list": [ { "line": "password\uc124\uc815\uc740getenv(\"DBPW\", b\"GEHE1MNIS\")", "line_num": 4, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "getenv(\"DBPW\",", "value_start": 11, "value_end": 25, "entropy": 3.52164 } ] }, { "rule": "DOC_GET", "severity": "medium", "confidence": "moderate", "ml_probability": 0.969, "line_data_list": [ { "line": "PASSWORD = os.environ.get(\"PASSWORD\") or \"at5G6zi!m\"", "line_num": 5, "path": "./tests/samples/doc_get_p", "info": "FILE:./tests/samples/doc_get_p|RAW", "variable": "PASSWORD =", "variable_start": 0, "variable_end": 10, "value": "at5G6zi!m", "value_start": 42, "value_end": 51, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.724, "line_data_list": [ { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.724, "line_data_list": [ { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 }, { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "master,PW:dipPr10Gg!", "value_start": 3, "value_end": 23, "entropy": 4.12193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.724, "line_data_list": [ { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.741, "line_data_list": [ { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr11Gg!", "value_start": 13, "value_end": 23, "entropy": 3.12193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.741, "line_data_list": [ { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr11Gg!", "value_start": 13, "value_end": 23, "entropy": 3.12193 }, { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 3, "value_end": 9, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.741, "line_data_list": [ { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr11Gg!", "value_start": 13, "value_end": 23, "entropy": 3.12193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.86, "line_data_list": [ { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr12Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.86, "line_data_list": [ { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr12Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 }, { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 3, "variable_end": 5, "value": "master", "value_start": 6, "value_end": 12, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.86, "line_data_list": [ { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr12Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr13Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr13Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 }, { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Username", "variable_start": 0, "variable_end": 8, "value": "master", "value_start": 9, "value_end": 15, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr13Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr14Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr14Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 }, { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "master,password:dipPr14Gg!", "value_start": 3, "value_end": 29, "entropy": 4.10391 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr14Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.798, "line_data_list": [ { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr15Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.798, "line_data_list": [ { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr15Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 }, { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "master/PW:dipPr15Gg!", "value_start": 3, "value_end": 23, "entropy": 4.12193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.798, "line_data_list": [ { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr15Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr16Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr16Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 }, { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 3, "value_end": 9, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr16Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr17Gg!", "value_start": 21, "value_end": 31, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr17Gg!", "value_start": 21, "value_end": 31, "entropy": 3.32193 }, { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master", "value_start": 5, "value_end": 11, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr17Gg!", "value_start": 21, "value_end": 31, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr19Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr19Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 }, { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 0, "variable_end": 8, "value": "master,password:dipPr19Gg!", "value_start": 9, "value_end": 35, "entropy": 4.10391 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr19Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.864, "line_data_list": [ { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 16, "variable_end": 19, "value": "dipPr110Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.864, "line_data_list": [ { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 16, "variable_end": 19, "value": "dipPr110Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 }, { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 0, "variable_end": 8, "value": "master", "value_start": 9, "value_end": 15, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.864, "line_data_list": [ { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 16, "variable_end": 19, "value": "dipPr110Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr111Gg!", "value_start": 22, "value_end": 33, "entropy": 3.02717 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr111Gg!", "value_start": 22, "value_end": 33, "entropy": 3.02717 }, { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 3, "variable_end": 5, "value": "master,password:dipPr111Gg!", "value_start": 6, "value_end": 33, "entropy": 4.00434 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr111Gg!", "value_start": 22, "value_end": 33, "entropy": 3.02717 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.712, "line_data_list": [ { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr112Gg!", "value_start": 14, "value_end": 25, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.712, "line_data_list": [ { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr112Gg!", "value_start": 14, "value_end": 25, "entropy": 3.27761 }, { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 3, "value_end": 9, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.712, "line_data_list": [ { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr112Gg!", "value_start": 14, "value_end": 25, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "entropy": 3.27761 }, { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user id", "variable_start": 0, "variable_end": 7, "value": "master", "value_start": 8, "value_end": 14, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr114Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr114Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 }, { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master,password:dipPr114Gg!", "value_start": 5, "value_end": 32, "entropy": 4.10638 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr114Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr115Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr115Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 }, { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master,password=dipPr115Gg!", "value_start": 5, "value_end": 32, "entropy": 4.10638 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr115Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr116Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr116Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 }, { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 0, "variable_end": 8, "value": "master", "value_start": 9, "value_end": 15, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr116Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr117Gg!", "value_start": 26, "value_end": 37, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr117Gg!", "value_start": 26, "value_end": 37, "entropy": 3.27761 }, { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "User name", "variable_start": 0, "variable_end": 9, "value": "master", "value_start": 10, "value_end": 16, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr117Gg!", "value_start": 26, "value_end": 37, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr118Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr118Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 }, { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 0, "variable_end": 8, "value": "master,password=dipPr118Gg!", "value_start": 9, "value_end": 36, "entropy": 4.10638 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr118Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr119Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr119Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 }, { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 2, "variable_end": 6, "value": "master", "value_start": 7, "value_end": 13, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr119Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.918, "line_data_list": [ { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "dipPr120Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.918, "line_data_list": [ { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "dipPr120Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 }, { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master", "value_start": 5, "value_end": 11, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.918, "line_data_list": [ { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "dipPr120Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "account", "variable_start": 0, "variable_end": 7, "value": "dipPr121Gg!", "value_start": 8, "value_end": 19, "entropy": 3.27761 }, { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr121Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr121Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr121Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.945, "line_data_list": [ { "line": "id:master pass:dipPr122Gg!", "line_num": 23, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr122Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "\uc544\uc774\ub514:master \ud328\uc2a4\uc6cc\ub4dc:dipPr123Gg!", "line_num": 24, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ud328\uc2a4\uc6cc\ub4dc", "variable_start": 11, "variable_end": 15, "value": "dipPr123Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "\uc544\uc774\ub514:master \ud328\uc2a4\uc6cc\ub4dc:dipPr123Gg!", "line_num": 24, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ud328\uc2a4\uc6cc\ub4dc", "variable_start": 11, "variable_end": 15, "value": "dipPr123Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 }, { "line": "\uc544\uc774\ub514:master \ud328\uc2a4\uc6cc\ub4dc:dipPr123Gg!", "line_num": 24, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uc544\uc774\ub514", "variable_start": 0, "variable_end": 3, "value": "master", "value_start": 4, "value_end": 10, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "\uc544\uc774\ub514:master \ud328\uc2a4\uc6cc\ub4dc:dipPr123Gg!", "line_num": 24, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ud328\uc2a4\uc6cc\ub4dc", "variable_start": 11, "variable_end": 15, "value": "dipPr123Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.937, "line_data_list": [ { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr124Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.937, "line_data_list": [ { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr124Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 }, { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master", "value_start": 5, "value_end": 11, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.937, "line_data_list": [ { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr124Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr125Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr125Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 }, { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Username", "variable_start": 0, "variable_end": 8, "value": "master/Password:dipPr125Gg!", "value_start": 9, "value_end": 36, "entropy": 4.18045 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.974, "line_data_list": [ { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr125Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.981, "line_data_list": [ { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr126Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.981, "line_data_list": [ { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr126Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 }, { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "userId", "variable_start": 0, "variable_end": 6, "value": "master,password:dipPr126Gg!", "value_start": 7, "value_end": 34, "entropy": 4.18045 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.981, "line_data_list": [ { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr126Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user master --password dipPr127Gg!", "line_num": 28, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr127Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user master --password dipPr127Gg!", "line_num": 28, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr127Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 }, { "line": "--user master --password dipPr127Gg!", "line_num": 28, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 2, "variable_end": 6, "value": "master", "value_start": 7, "value_end": 13, "entropy": 2.58496 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 34, "variable_end": 42, "value": "dipPr128Gg!", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 34, "variable_end": 42, "value": "dipPr128Gg!", "value_start": 43, "value_end": 54, "entropy": 3.45943 }, { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 12, "variable_end": 14, "value": "master", "value_start": 15, "value_end": 21, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 34, "variable_end": 42, "value": "dipPr128Gg!", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr129Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr129Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 }, { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 3, "variable_end": 5, "value": "master,pw:dipPr129Gg!", "value_start": 6, "value_end": 27, "entropy": 4.20184 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr129Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.923, "line_data_list": [ { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr130Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.923, "line_data_list": [ { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr130Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 }, { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master", "value_start": 5, "value_end": 11, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.923, "line_data_list": [ { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr130Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Login", "variable_start": 0, "variable_end": 5, "value": "dipPr131Gg!", "value_start": 6, "value_end": 17, "entropy": 3.27761 }, { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Pwd", "variable_start": 18, "variable_end": 21, "value": "dipPr131Gg!", "value_start": 22, "value_end": 33, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Pwd", "variable_start": 18, "variable_end": 21, "value": "dipPr131Gg!", "value_start": 22, "value_end": 33, "entropy": 3.27761 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Pwd", "variable_start": 18, "variable_end": 21, "value": "dipPr131Gg!", "value_start": 22, "value_end": 33, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 13, "variable_end": 21, "value": "dipPr132Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 13, "variable_end": 21, "value": "dipPr132Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 }, { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 3, "variable_end": 5, "value": "master", "value_start": 6, "value_end": 12, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 13, "variable_end": 21, "value": "dipPr132Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.959, "line_data_list": [ { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 18, "variable_end": 26, "value": "dipPr133Gg!", "value_start": 27, "value_end": 38, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.959, "line_data_list": [ { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 18, "variable_end": 26, "value": "dipPr133Gg!", "value_start": 27, "value_end": 38, "entropy": 3.27761 }, { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Username", "variable_start": 1, "variable_end": 9, "value": "master", "value_start": 10, "value_end": 16, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.959, "line_data_list": [ { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 18, "variable_end": 26, "value": "dipPr133Gg!", "value_start": 27, "value_end": 38, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "account", "variable_start": 0, "variable_end": 7, "value": "dipPr134Gg!", "value_start": 8, "value_end": 19, "entropy": 3.45943 }, { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr134Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr134Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr134Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.956, "line_data_list": [ { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr135Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.956, "line_data_list": [ { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr135Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 }, { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user id", "variable_start": 0, "variable_end": 7, "value": "master", "value_start": 8, "value_end": 14, "entropy": 2.58496 }, { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 15, "variable_end": 19, "value": "pw:dipPr135Gg!", "value_start": 20, "value_end": 34, "entropy": 3.6645 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.956, "line_data_list": [ { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr135Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 17, "variable_end": 25, "value": "dipPr136Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 17, "variable_end": 25, "value": "dipPr136Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 }, { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "name", "variable_start": 5, "variable_end": 9, "value": "master", "value_start": 10, "value_end": 16, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 17, "variable_end": 25, "value": "dipPr136Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--username master --password dipPr137Gg!", "line_num": 38, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr137Gg!", "value_start": 29, "value_end": 40, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--username master --password dipPr137Gg!", "line_num": 38, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr137Gg!", "value_start": 29, "value_end": 40, "entropy": 3.45943 }, { "line": "--username master --password dipPr137Gg!", "line_num": 38, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 2, "variable_end": 10, "value": "master", "value_start": 11, "value_end": 17, "entropy": 2.58496 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANYpassword", "variable_start": 16, "variable_end": 27, "value": "dipPr138Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANYpassword", "variable_start": 16, "variable_end": 27, "value": "dipPr138Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 }, { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "login", "variable_start": 3, "variable_end": 8, "value": "master,ANYpassword:dipPr138Gg!", "value_start": 9, "value_end": 39, "entropy": 4.3899 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 19, "variable_end": 27, "value": "dipPr138Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANYpassword", "variable_start": 19, "variable_end": 30, "value": "dipPr139Gg!", "value_start": 31, "value_end": 42, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANYpassword", "variable_start": 19, "variable_end": 30, "value": "dipPr139Gg!", "value_start": 31, "value_end": 42, "entropy": 3.45943 }, { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 3, "variable_end": 11, "value": "master", "value_start": 12, "value_end": 18, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 22, "variable_end": 30, "value": "dipPr139Gg!", "value_start": 31, "value_end": 42, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.842, "line_data_list": [ { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr140Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.842, "line_data_list": [ { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr140Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 }, { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "master,PWD:dipPr140Gg!", "value_start": 3, "value_end": 25, "entropy": 4.27761 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.842, "line_data_list": [ { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr140Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.958, "line_data_list": [ { "line": "ID:master/PASS:dipPr141Gg!", "line_num": 42, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PASS", "variable_start": 10, "variable_end": 14, "value": "dipPr141Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 15, "variable_end": 21, "value": "dipPr142Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 15, "variable_end": 21, "value": "dipPr142Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 }, { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "account", "variable_start": 0, "variable_end": 7, "value": "master", "value_start": 8, "value_end": 14, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "passwd", "variable_start": 15, "variable_end": 21, "value": "dipPr142Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr143Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr143Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 }, { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "login", "variable_start": 0, "variable_end": 5, "value": "master", "value_start": 6, "value_end": 12, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr143Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.963, "line_data_list": [ { "line": "user=master,pass=dipPr144Gg!", "line_num": 45, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr144Gg!", "value_start": 17, "value_end": 28, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "dipPr145Gg!", "value_start": 9, "value_end": 20, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "dipPr145Gg!", "value_start": 9, "value_end": 20, "entropy": 3.45943 }, { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 21, "variable_end": 29, "value": "master", "value_start": 30, "value_end": 36, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "dipPr145Gg!", "value_start": 9, "value_end": 20, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Login", "variable_start": 0, "variable_end": 5, "value": "as:master", "value_start": 6, "value_end": 15, "entropy": 2.72548 }, { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr146Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr146Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr146Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "ID:master,pass:dipPr147Gg!", "line_num": 48, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr147Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 10, "variable_end": 12, "value": "dipPr148Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 10, "variable_end": 12, "value": "dipPr148Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 }, { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 3, "value_end": 9, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 10, "variable_end": 12, "value": "dipPr148Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.938, "line_data_list": [ { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 23, "variable_end": 25, "value": "dipPr149Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.938, "line_data_list": [ { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 23, "variable_end": 25, "value": "dipPr149Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 }, { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 13, "variable_end": 15, "value": "master", "value_start": 16, "value_end": 22, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.938, "line_data_list": [ { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 23, "variable_end": 25, "value": "dipPr149Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.956, "line_data_list": [ { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr151Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.956, "line_data_list": [ { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr151Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 }, { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 1, "variable_end": 3, "value": "master", "value_start": 4, "value_end": 10, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.956, "line_data_list": [ { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr151Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.904, "line_data_list": [ { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr152Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.904, "line_data_list": [ { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr152Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 }, { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 0, "variable_end": 8, "value": "master", "value_start": 9, "value_end": 15, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.904, "line_data_list": [ { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr152Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.005, "line_data_list": [ { "line": "\uacc4\uc815:master \ud328\uc2a4\uc6cc\ub4dc:dipPr153Gg!", "line_num": 54, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ud328\uc2a4\uc6cc\ub4dc", "variable_start": 10, "variable_end": 14, "value": "dipPr153Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.005, "line_data_list": [ { "line": "\uacc4\uc815:master \ud328\uc2a4\uc6cc\ub4dc:dipPr153Gg!", "line_num": 54, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ud328\uc2a4\uc6cc\ub4dc", "variable_start": 10, "variable_end": 14, "value": "dipPr153Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 }, { "line": "\uacc4\uc815:master \ud328\uc2a4\uc6cc\ub4dc:dipPr153Gg!", "line_num": 54, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uacc4\uc815", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 3, "value_end": 9, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.005, "line_data_list": [ { "line": "\uacc4\uc815:master \ud328\uc2a4\uc6cc\ub4dc:dipPr153Gg!", "line_num": 54, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ud328\uc2a4\uc6cc\ub4dc", "variable_start": 10, "variable_end": 14, "value": "dipPr153Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 19, "variable_end": 27, "value": "dipPr154Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 19, "variable_end": 27, "value": "dipPr154Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 }, { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "User Name", "variable_start": 1, "variable_end": 10, "value": "master", "value_start": 11, "value_end": 17, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 19, "variable_end": 27, "value": "dipPr154Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr155Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr155Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 }, { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "account", "variable_start": 0, "variable_end": 7, "value": "dipPr155Gg!/password:dipPr155Gg!", "value_start": 8, "value_end": 40, "entropy": 3.86673 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr155Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.981, "line_data_list": [ { "line": "ANYuser=master ANY_pass=dipPr156Gg!", "line_num": 57, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_pass", "variable_start": 15, "variable_end": 23, "value": "dipPr156Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr157Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr157Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 }, { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "User", "variable_start": 3, "variable_end": 7, "value": "master", "value_start": 8, "value_end": 14, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr157Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.963, "line_data_list": [ { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr158Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.963, "line_data_list": [ { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr158Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 }, { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master,pwd:dipPr158Gg!", "value_start": 5, "value_end": 27, "entropy": 4.1867 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.963, "line_data_list": [ { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr158Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 20, "variable_end": 32, "value": "dipPr159Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 20, "variable_end": 32, "value": "dipPr159Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 }, { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 4, "variable_end": 12, "value": "master,ANY_password:dipPr159Gg!", "value_start": 13, "value_end": 44, "entropy": 4.45388 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 24, "variable_end": 32, "value": "dipPr159Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 19, "variable_end": 31, "value": "dipPr160Gg!", "value_start": 32, "value_end": 43, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_password", "variable_start": 19, "variable_end": 31, "value": "dipPr160Gg!", "value_start": 32, "value_end": 43, "entropy": 3.45943 }, { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 3, "variable_end": 11, "value": "master,ANY_password:dipPr160Gg!", "value_start": 12, "value_end": 43, "entropy": 4.45388 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 23, "variable_end": 31, "value": "dipPr160Gg!", "value_start": 32, "value_end": 43, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "ANY_USER=master ANY_PASS=dipPr161Gg!", "line_num": 62, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ANY_PASS", "variable_start": 16, "variable_end": 24, "value": "dipPr161Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 25, "variable_end": 33, "value": "dipPr162Gg!", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 25, "variable_end": 33, "value": "dipPr162Gg!", "value_start": 34, "value_end": 45, "entropy": 3.45943 }, { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "User Account", "variable_start": 0, "variable_end": 12, "value": "master", "value_start": 13, "value_end": 19, "entropy": 2.58496 }, { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "User", "variable_start": 20, "variable_end": 24, "value": "password:dipPr162Gg!", "value_start": 25, "value_end": 45, "entropy": 3.92193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 25, "variable_end": 33, "value": "dipPr162Gg!", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.922, "line_data_list": [ { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 34, "variable_end": 37, "value": "dipPr163Gg!", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.922, "line_data_list": [ { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 34, "variable_end": 37, "value": "dipPr163Gg!", "value_start": 38, "value_end": 49, "entropy": 3.45943 }, { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 12, "variable_end": 14, "value": "master", "value_start": 15, "value_end": 21, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.922, "line_data_list": [ { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PWD", "variable_start": 34, "variable_end": 37, "value": "dipPr163Gg!", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr164Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr164Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 }, { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "userid", "variable_start": 0, "variable_end": 6, "value": "master", "value_start": 7, "value_end": 13, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr164Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 24, "variable_end": 32, "value": "dipPr165Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 24, "variable_end": 32, "value": "dipPr165Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 }, { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 4, "variable_end": 12, "value": "master", "value_start": 13, "value_end": 19, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 24, "variable_end": 32, "value": "dipPr165Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.948, "line_data_list": [ { "line": "username:master pass:dipPr166Gg!", "line_num": 67, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 16, "variable_end": 20, "value": "dipPr166Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.977, "line_data_list": [ { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr168Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.977, "line_data_list": [ { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr168Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 }, { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master", "value_start": 5, "value_end": 11, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.977, "line_data_list": [ { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr168Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.825, "line_data_list": [ { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "dipPr169Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.825, "line_data_list": [ { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "dipPr169Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 }, { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Name", "variable_start": 0, "variable_end": 4, "value": "master,PW:dipPr169Gg!", "value_start": 5, "value_end": 26, "entropy": 4.20184 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.825, "line_data_list": [ { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "dipPr169Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.953, "line_data_list": [ { "line": "user:master pass:dipPr172Gg!", "line_num": 73, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr172Gg!", "value_start": 17, "value_end": 28, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.131, "line_data_list": [ { "line": "\uacc4\uc815:master \ube44\ubc88:dipPr173Gg!", "line_num": 74, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc88", "variable_start": 10, "variable_end": 12, "value": "dipPr173Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.131, "line_data_list": [ { "line": "\uacc4\uc815:master \ube44\ubc88:dipPr173Gg!", "line_num": 74, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc88", "variable_start": 10, "variable_end": 12, "value": "dipPr173Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 }, { "line": "\uacc4\uc815:master \ube44\ubc88:dipPr173Gg!", "line_num": 74, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uacc4\uc815", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 3, "value_end": 9, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.131, "line_data_list": [ { "line": "\uacc4\uc815:master \ube44\ubc88:dipPr173Gg!", "line_num": 74, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc88", "variable_start": 10, "variable_end": 12, "value": "dipPr173Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr174Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr174Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 }, { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master", "value_start": 5, "value_end": 11, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr174Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr175Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr175Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 }, { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Host", "variable_start": 0, "variable_end": 4, "value": "name:master/Password:dipPr175Gg!", "value_start": 5, "value_end": 37, "entropy": 4.24173 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr175Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr176Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr176Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 }, { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "role", "variable_start": 0, "variable_end": 4, "value": "master,password:dipPr176Gg!", "value_start": 5, "value_end": 32, "entropy": 4.18045 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr176Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.842, "line_data_list": [ { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Wifi", "variable_start": 0, "variable_end": 4, "value": "Name:master,PW:dipPr177Gg!", "value_start": 5, "value_end": 31, "entropy": 4.16198 }, { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "dipPr177Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.842, "line_data_list": [ { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "dipPr177Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.842, "line_data_list": [ { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "dipPr177Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 10, "variable_end": 18, "value": "dipPr178Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 10, "variable_end": 18, "value": "dipPr178Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 }, { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "master/Password:dipPr178Gg!", "value_start": 3, "value_end": 30, "entropy": 4.18045 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 10, "variable_end": 18, "value": "dipPr178Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr179Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr179Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 }, { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "name", "variable_start": 0, "variable_end": 4, "value": "master,password:dipPr179Gg!", "value_start": 5, "value_end": 32, "entropy": 4.18045 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr179Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Loging:master Password:dipPr180Gg!", "line_num": 81, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 14, "variable_end": 22, "value": "dipPr180Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Loging:master Password:dipPr180Gg!", "line_num": 81, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Password", "variable_start": 14, "variable_end": 22, "value": "dipPr180Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.96, "line_data_list": [ { "line": "Loging:master Pwd:dipPr181Gg!", "line_num": 82, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Pwd", "variable_start": 14, "variable_end": 17, "value": "dipPr181Gg!", "value_start": 18, "value_end": 29, "entropy": 3.27761 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.96, "line_data_list": [ { "line": "Loging:master Pwd:dipPr181Gg!", "line_num": 82, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "Pwd", "variable_start": 14, "variable_end": 17, "value": "dipPr181Gg!", "value_start": 18, "value_end": 29, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.966, "line_data_list": [ { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 18, "variable_end": 20, "value": "dipPr182Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.966, "line_data_list": [ { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 18, "variable_end": 20, "value": "dipPr182Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 }, { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "master,default", "value_start": 3, "value_end": 17, "entropy": 3.37878 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.966, "line_data_list": [ { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 18, "variable_end": 20, "value": "dipPr182Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.592, "line_data_list": [ { "line": "ID:master/\ube44\ubc88:dipPr184Gg!", "line_num": 85, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc88", "variable_start": 10, "variable_end": 12, "value": "dipPr184Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.592, "line_data_list": [ { "line": "ID:master/\ube44\ubc88:dipPr184Gg!", "line_num": 85, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc88", "variable_start": 10, "variable_end": 12, "value": "dipPr184Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 }, { "line": "ID:master/\ube44\ubc88:dipPr184Gg!", "line_num": 85, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "master/\ube44\ubc88:dipPr184Gg!", "value_start": 3, "value_end": 24, "entropy": 4.29708 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.592, "line_data_list": [ { "line": "ID:master/\ube44\ubc88:dipPr184Gg!", "line_num": 85, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc88", "variable_start": 10, "variable_end": 12, "value": "dipPr184Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.972, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr185Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.972, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr185Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 }, { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 6, "variable_end": 8, "value": "master", "value_start": 9, "value_end": 15, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.972, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr185Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.963, "line_data_list": [ { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr186Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.963, "line_data_list": [ { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr186Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 }, { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "user", "variable_start": 0, "variable_end": 4, "value": "master,pwd:dipPr186Gg!", "value_start": 5, "value_end": 27, "entropy": 4.1867 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.963, "line_data_list": [ { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr186Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.894, "line_data_list": [ { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr188Gg!", "value_start": 19, "value_end": 30, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.894, "line_data_list": [ { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr188Gg!", "value_start": 19, "value_end": 30, "entropy": 3.27761 }, { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 0, "variable_end": 8, "value": "master/pw:dipPr188Gg!", "value_start": 9, "value_end": 30, "entropy": 4.1066 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.894, "line_data_list": [ { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr188Gg!", "value_start": 19, "value_end": 30, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.957, "line_data_list": [ { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr189Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.957, "line_data_list": [ { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr189Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 }, { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "username", "variable_start": 0, "variable_end": 8, "value": "master", "value_start": 9, "value_end": 15, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.957, "line_data_list": [ { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr189Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.629, "line_data_list": [ { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "dipPr190Gg!", "value_start": 3, "value_end": 14, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.629, "line_data_list": [ { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "dipPr190Gg!", "value_start": 3, "value_end": 14, "entropy": 3.45943 }, { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "ID", "variable_start": 15, "variable_end": 17, "value": "master", "value_start": 18, "value_end": 24, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.629, "line_data_list": [ { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "dipPr190Gg!", "value_start": 3, "value_end": 14, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.002, "line_data_list": [ { "line": "\uc544\uc774\ub514:master \ube44\ubc00\ubc88\ud638:dipPr191Gg!", "line_num": 92, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc00\ubc88\ud638", "variable_start": 11, "variable_end": 15, "value": "dipPr191Gg!", "value_start": 16, "value_end": 27, "entropy": 3.27761 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.002, "line_data_list": [ { "line": "\uc544\uc774\ub514:master \ube44\ubc00\ubc88\ud638:dipPr191Gg!", "line_num": 92, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc00\ubc88\ud638", "variable_start": 11, "variable_end": 15, "value": "dipPr191Gg!", "value_start": 16, "value_end": 27, "entropy": 3.27761 }, { "line": "\uc544\uc774\ub514:master \ube44\ubc00\ubc88\ud638:dipPr191Gg!", "line_num": 92, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uc544\uc774\ub514", "variable_start": 0, "variable_end": 3, "value": "master", "value_start": 4, "value_end": 10, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.002, "line_data_list": [ { "line": "\uc544\uc774\ub514:master \ube44\ubc00\ubc88\ud638:dipPr191Gg!", "line_num": 92, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\ube44\ubc00\ubc88\ud638", "variable_start": 11, "variable_end": 15, "value": "dipPr191Gg!", "value_start": 16, "value_end": 27, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr194Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr194Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 }, { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 3, "variable_end": 5, "value": "master", "value_start": 6, "value_end": 12, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr194Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.188, "line_data_list": [ { "line": "\uacc4\uc815:master \uc554\ud638:dipPr195Gg!", "line_num": 96, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uc554\ud638", "variable_start": 10, "variable_end": 12, "value": "dipPr195Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.188, "line_data_list": [ { "line": "\uacc4\uc815:master \uc554\ud638:dipPr195Gg!", "line_num": 96, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uc554\ud638", "variable_start": 10, "variable_end": 12, "value": "dipPr195Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 }, { "line": "\uacc4\uc815:master \uc554\ud638:dipPr195Gg!", "line_num": 96, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uacc4\uc815", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 3, "value_end": 9, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.188, "line_data_list": [ { "line": "\uacc4\uc815:master \uc554\ud638:dipPr195Gg!", "line_num": 96, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "\uc554\ud638", "variable_start": 10, "variable_end": 12, "value": "dipPr195Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "dipPr197Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "dipPr197Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 }, { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "master", "value_start": 4, "value_end": 10, "entropy": 2.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "dipPr197Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.804, "line_data_list": [ { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "dipPr198Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.804, "line_data_list": [ { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "dipPr198Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 }, { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "master@example.com,pw:dipPr198Gg!", "value_start": 3, "value_end": 36, "entropy": 4.49092 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.804, "line_data_list": [ { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "dipPr198Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.666, "line_data_list": [ { "line": "id:master@example.com,pw:IHQSB1GG!", "line_num": 102, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "FILE:./tests/samples/doc_id_pair_passwd_pair|RAW", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "IHQSB1GG!", "value_start": 25, "value_end": 34, "entropy": 2.9477 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.868, "line_data_list": [ { "line": "ID/PW:master/iPp0@GRq", "line_num": 1, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/PW", "variable_start": 0, "variable_end": 5, "value": "iPp0@GRq", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.005, "line_data_list": [ { "line": "ID/PW:master/iPp0@GRq", "line_num": 1, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp0@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.679, "line_data_list": [ { "line": "ANYID(PW):master(iPp1@GRq)", "line_num": 2, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ANYID(PW", "variable_start": 0, "variable_end": 8, "value": "iPp1@GRq", "value_start": 17, "value_end": 25, "entropy": 3.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "ID/Password:master/iPp2@GRq", "line_num": 3, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/Password", "variable_start": 0, "variable_end": 11, "value": "iPp2@GRq", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.104, "line_data_list": [ { "line": "ID/Password:master/iPp2@GRq", "line_num": 3, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp2@GRq", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.02, "line_data_list": [ { "line": "ID/Pass:master/iPp3@GRq", "line_num": 4, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "master/iPp3@GRq", "value_start": 8, "value_end": 23, "entropy": 3.90689 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.027, "line_data_list": [ { "line": "ID:PW=master:iPp4@GRq", "line_num": 5, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "PW=master:iPp4@GRq", "value_start": 3, "value_end": 21, "entropy": 4.05881 }, { "line": "ID:PW=master:iPp4@GRq", "line_num": 5, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master:iPp4@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.982, "line_data_list": [ { "line": "ID:PW=master:iPp4@GRq", "line_num": 5, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID:PW", "variable_start": 0, "variable_end": 5, "value": "iPp4@GRq", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.027, "line_data_list": [ { "line": "ID:PW=master:iPp4@GRq", "line_num": 5, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master:iPp4@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.952, "line_data_list": [ { "line": "ID/PW=master/iPp5@GRq", "line_num": 6, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/PW", "variable_start": 0, "variable_end": 5, "value": "iPp5@GRq", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.008, "line_data_list": [ { "line": "ID/PW=master/iPp5@GRq", "line_num": 6, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp5@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.967, "line_data_list": [ { "line": "id/pw master/iPp6@GRq", "line_num": 7, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "id/pw", "variable_start": 0, "variable_end": 5, "value": "iPp6@GRq", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.985, "line_data_list": [ { "line": "username/password:master/iPp7@GRq", "line_num": 8, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "username/password", "variable_start": 0, "variable_end": 17, "value": "iPp7@GRq", "value_start": 25, "value_end": 33, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.212, "line_data_list": [ { "line": "username/password:master/iPp7@GRq", "line_num": 8, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "password", "variable_start": 9, "variable_end": 17, "value": "master/iPp7@GRq", "value_start": 18, "value_end": 33, "entropy": 3.90689 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.956, "line_data_list": [ { "line": "id/passwd:master/iPp8@GRq", "line_num": 9, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "id/passwd", "variable_start": 0, "variable_end": 9, "value": "iPp8@GRq", "value_start": 17, "value_end": 25, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.023, "line_data_list": [ { "line": "id/passwd:master/iPp8@GRq", "line_num": 9, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "passwd", "variable_start": 3, "variable_end": 9, "value": "master/iPp8@GRq", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "ID PW master iPp9@GRq", "line_num": 10, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID PW", "variable_start": 0, "variable_end": 5, "value": "iPp9@GRq", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.569, "line_data_list": [ { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 22, "variable_end": 24, "value": "iPp10@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.569, "line_data_list": [ { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 22, "variable_end": 24, "value": "iPp10@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 }, { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID", "variable_start": 12, "variable_end": 14, "value": "master/PW:iPp10@GRq", "value_start": 15, "value_end": 34, "entropy": 4.14266 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.569, "line_data_list": [ { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 22, "variable_end": 24, "value": "iPp10@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.882, "line_data_list": [ { "line": "ID / PW : db / iPp14@GRq", "line_num": 15, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID / PW", "variable_start": 1, "variable_end": 8, "value": "iPp14@GRq", "value_start": 16, "value_end": 25, "entropy": 3.16993 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.017, "line_data_list": [ { "line": "\uc544\uc774\ub514/PW:master/iPp16@GRq", "line_num": 17, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "\uc544\uc774\ub514/PW", "variable_start": 0, "variable_end": 6, "value": "iPp16@GRq", "value_start": 14, "value_end": 23, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.001, "line_data_list": [ { "line": "\uc544\uc774\ub514/PW:master/iPp16@GRq", "line_num": 17, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 4, "variable_end": 6, "value": "master/iPp16@GRq", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.103, "line_data_list": [ { "line": "\uacc4\uc815/PW:master/iPp17@GRq", "line_num": 18, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "\uacc4\uc815/PW", "variable_start": 0, "variable_end": 5, "value": "iPp17@GRq", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.001, "line_data_list": [ { "line": "\uacc4\uc815/PW:master/iPp17@GRq", "line_num": 18, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp17@GRq", "value_start": 6, "value_end": 22, "entropy": 4.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.596, "line_data_list": [ { "line": "ID/PW(master/iPp18@GRq)", "line_num": 19, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/PW", "variable_start": 0, "variable_end": 5, "value": "iPp18@GRq", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "98.76.54.32 id/pw:master/iPp19@GRq", "line_num": 20, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "id/pw", "variable_start": 12, "variable_end": 17, "value": "iPp19@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.16, "line_data_list": [ { "line": "98.76.54.32 id/pw:master/iPp19@GRq", "line_num": 20, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "pw", "variable_start": 15, "variable_end": 17, "value": "master/iPp19@GRq", "value_start": 18, "value_end": 34, "entropy": 4.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.02, "line_data_list": [ { "line": "id/pass:master,iPp20@GRq", "line_num": 21, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "pass", "variable_start": 3, "variable_end": 7, "value": "master,iPp20@GRq", "value_start": 8, "value_end": 24, "entropy": 4.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.837, "line_data_list": [ { "line": "ID/PWD:master/iPp21@GRq", "line_num": 22, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/PWD", "variable_start": 0, "variable_end": 6, "value": "iPp21@GRq", "value_start": 14, "value_end": 23, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.008, "line_data_list": [ { "line": "ID/PWD:master/iPp21@GRq", "line_num": 22, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PWD", "variable_start": 3, "variable_end": 6, "value": "master/iPp21@GRq", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.583, "line_data_list": [ { "line": "user/pwd:master/iPp22@GRq", "line_num": 23, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "user/pwd", "variable_start": 0, "variable_end": 8, "value": "iPp22@GRq", "value_start": 16, "value_end": 25, "entropy": 2.9477 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.019, "line_data_list": [ { "line": "user/pwd:master/iPp22@GRq", "line_num": 23, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "pwd", "variable_start": 5, "variable_end": 8, "value": "master/iPp22@GRq", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.758, "line_data_list": [ { "line": "id pw master // iPp23@GRq", "line_num": 24, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "id pw", "variable_start": 0, "variable_end": 5, "value": "iPp23@GRq", "value_start": 16, "value_end": 25, "entropy": 3.16993 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.951, "line_data_list": [ { "line": "User/Password master/iPp24@GRq", "line_num": 25, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "User/Password", "variable_start": 0, "variable_end": 13, "value": "iPp24@GRq", "value_start": 21, "value_end": 30, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.02, "line_data_list": [ { "line": "user/pass:master/iPp25@GRq", "line_num": 26, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "pass", "variable_start": 5, "variable_end": 9, "value": "master/iPp25@GRq", "value_start": 10, "value_end": 26, "entropy": 4.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.94, "line_data_list": [ { "line": "id/pwd master/iPp26@GRq", "line_num": 27, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "id/pwd", "variable_start": 0, "variable_end": 6, "value": "iPp26@GRq", "value_start": 14, "value_end": 23, "entropy": 3.16993 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "ID/Password=master/iPp27@GRq", "line_num": 28, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/Password", "variable_start": 0, "variable_end": 11, "value": "iPp27@GRq", "value_start": 19, "value_end": 28, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.284, "line_data_list": [ { "line": "ID/Password=master/iPp27@GRq", "line_num": 28, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp27@GRq", "value_start": 12, "value_end": 28, "entropy": 4.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.91, "line_data_list": [ { "line": "ID/PW:master/iPp28@GRq", "line_num": 29, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/PW", "variable_start": 0, "variable_end": 5, "value": "iPp28@GRq", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.011, "line_data_list": [ { "line": "ID/PW:master/iPp28@GRq", "line_num": 29, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp28@GRq", "value_start": 6, "value_end": 22, "entropy": 4.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.957, "line_data_list": [ { "line": "ID/PW->master/iPp29@GRq", "line_num": 30, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "ID/PW", "variable_start": 0, "variable_end": 5, "value": "iPp29@GRq", "value_start": 14, "value_end": 23, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "Default ID/PW are wpasp/wpasp.", "line_num": 32, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "PW", "variable_start": 11, "variable_end": 13, "value": "wpasp/wpasp.", "value_start": 18, "value_end": 30, "entropy": 2.4183 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.001, "line_data_list": [ { "line": "password: ", "line_num": 35, "path": "./tests/samples/doc_id_passwd_pair", "info": "FILE:./tests/samples/doc_id_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "line_num": 48, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.965, "line_data_list": [ { "line": "password=>Prl23Db#@", "line_num": 48, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.059, "line_data_list": [ { "line": "P/W:Prl23Db#@", "line_num": 50, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "P/W", "variable_start": 0, "variable_end": 3, "value": "Prl23Db#@", "value_start": 4, "value_end": 13, "entropy": 3.16993 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.059, "line_data_list": [ { "line": "P/W:Prl23Db#@", "line_num": 50, "path": "./tests/samples/doc_passwd_pair", "info": "FILE:./tests/samples/doc_passwd_pair|RAW", "variable": "P/W", "variable_start": 0, "variable_end": 3, "value": "Prl23Db#@", "value_start": 4, "value_end": 13, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-Token:AIhq5Xyb1Gga9Q0", "line_num": 1, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Token", "variable_start": 4, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q0", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-Token:AIhq5Xyb1Gga9Q0", "line_num": 1, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Token", "variable_start": 4, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q0", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token:AIhq5Xyb1Gga9Q2", "line_num": 3, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "AIhq5Xyb1Gga9Q2", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token:AIhq5Xyb1Gga9Q2", "line_num": 3, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "AIhq5Xyb1Gga9Q2", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "KEY", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "KEY", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret=AIhq5Xyb1Gga9Q4", "line_num": 5, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q4", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret=AIhq5Xyb1Gga9Q4", "line_num": 5, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q4", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--token AIhq5Xyb1Gga9Q5", "line_num": 6, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 2, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q5", "value_start": 8, "value_end": 23, "entropy": 3.77356 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret:AIhq5Xyb1Gga9Q6", "line_num": 7, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q6", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret:AIhq5Xyb1Gga9Q6", "line_num": 7, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q6", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_token=AIhq5Xyb1Gga9Q7", "line_num": 8, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q7", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_token=AIhq5Xyb1Gga9Q7", "line_num": 8, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 4, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q7", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-secret AIhq5Xyb1Gga9Q10", "line_num": 11, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 1, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q10", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY.secret=AIhq5Xyb1Gga9Q19", "line_num": 20, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q19", "value_start": 11, "value_end": 27, "entropy": 3.75 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY.secret=AIhq5Xyb1Gga9Q19", "line_num": 20, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q19", "value_start": 11, "value_end": 27, "entropy": 3.75 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--secret=AIhq5Xyb1Gga9Q21", "line_num": 22, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 2, "variable_end": 8, "value": "AIhq5Xyb1Gga9Q21", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--secret=AIhq5Xyb1Gga9Q21", "line_num": 22, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 2, "variable_end": 8, "value": "AIhq5Xyb1Gga9Q21", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_secret:AIhq5Xyb1Gga9Q22", "line_num": 23, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q22", "value_start": 11, "value_end": 27, "entropy": 3.875 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_secret:AIhq5Xyb1Gga9Q22", "line_num": 23, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q22", "value_start": 11, "value_end": 27, "entropy": 3.875 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Token:AIhq5Xyb1Gga9Q23", "line_num": 24, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Token", "variable_start": 1, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q23", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Token:AIhq5Xyb1Gga9Q23", "line_num": 24, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Token", "variable_start": 1, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q23", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access key:AIhq5Xyb1Gga9Q26", "line_num": 27, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q26", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access key:AIhq5Xyb1Gga9Q26", "line_num": 27, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q26", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "Key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_key=AIhq5Xyb1Gga9Q29", "line_num": 30, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_key", "variable_start": 0, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q29", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_key=AIhq5Xyb1Gga9Q29", "line_num": 30, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 4, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q29", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANYkey", "variable_start": 7, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 10, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", "line_num": 32, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "ANY_token", "variable_start": 24, "variable_end": 33, "value": "AIhq5Xyb1Gga9Q31", "value_start": 34, "value_end": 50, "entropy": 3.875 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", "line_num": 32, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 28, "variable_end": 33, "value": "AIhq5Xyb1Gga9Q31", "value_start": 34, "value_end": 50, "entropy": 3.875 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access_token:AIhq5Xyb1Gga9Q33", "line_num": 34, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "access_token", "variable_start": 0, "variable_end": 12, "value": "AIhq5Xyb1Gga9Q33", "value_start": 13, "value_end": 29, "entropy": 3.875 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access_token:AIhq5Xyb1Gga9Q33", "line_num": 34, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "token", "variable_start": 7, "variable_end": 12, "value": "AIhq5Xyb1Gga9Q33", "value_start": 13, "value_end": 29, "entropy": 3.875 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 15, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 15, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.004, "line_data_list": [ { "line": "page.action?spaceKey=LOGIC&title=QUANTUM\",", "line_num": 39, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "spaceKey", "variable_start": 12, "variable_end": 20, "value": "LOGIC", "value_start": 21, "value_end": 26, "entropy": 2.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "\"key\":\"attached_file_0\"", "line_num": 41, "path": "./tests/samples/doc_secret_pair", "info": "FILE:./tests/samples/doc_secret_pair|RAW", "variable": "key", "variable_start": 1, "variable_end": 4, "value": "attached_file_0", "value_start": 7, "value_end": 22, "entropy": 3.37356 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.939, "line_data_list": [ { "line": "98.76.54.32 (master/IhqSb1Gg)", "line_num": 1, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": null, "variable_start": -1, "variable_end": -1, "value": "IhqSb1Gg)", "value_start": 20, "value_end": 29, "entropy": 3.16993 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.932, "line_data_list": [ { "line": "98.76.54.32(master/IhqSb1Gg)", "line_num": 2, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": null, "variable_start": -1, "variable_end": -1, "value": "IhqSb1Gg)", "value_start": 19, "value_end": 28, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 3, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 3, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.647, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.647, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 }, { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "gildong.hong@example.com", "value_start": 3, "value_end": 27, "entropy": 3.77206 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.647, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.108, "line_data_list": [ { "line": "Password:master/IhqSb1Gg", "line_num": 5, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "master/IhqSb1Gg", "value_start": 9, "value_end": 24, "entropy": 3.90689 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.978, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", "line_num": 6, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.978, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", "line_num": 6, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", "line_num": 7, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", "line_num": 7, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 11, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 53, "variable_end": 61, "value": "IhqSb1Gg", "value_start": 62, "value_end": 70, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 11, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 53, "variable_end": 61, "value": "IhqSb1Gg", "value_start": 62, "value_end": 70, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.136, "line_data_list": [ { "line": "ID/Pass:xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg", "line_num": 13, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg", "value_start": 8, "value_end": 49, "entropy": 3.9917 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", "line_num": 15, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 25, "variable_end": 28, "value": "IhqSb1Gg", "value_start": 29, "value_end": 37, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", "line_num": 15, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 25, "variable_end": 28, "value": "IhqSb1Gg", "value_start": 29, "value_end": 37, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.054, "line_data_list": [ { "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", "line_num": 16, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "IhqSb1Gg", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.054, "line_data_list": [ { "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", "line_num": 16, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "IhqSb1Gg", "value_start": 13, "value_end": 21, "entropy": 3.0 }, { "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", "line_num": 16, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "\uacc4\uc815", "variable_start": 0, "variable_end": 2, "value": "master(PW:IhqSb1Gg)", "value_start": 3, "value_end": 22, "entropy": 4.24793 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.054, "line_data_list": [ { "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", "line_num": 16, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "IhqSb1Gg", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "98.76.54.32(pw:IhqSb1Gg)", "line_num": 17, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "98.76.54.32(pw:IhqSb1Gg)", "line_num": 17, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "98.76.54.32/pw:IhqSb1Gg", "line_num": 19, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "98.76.54.32/pw:IhqSb1Gg", "line_num": 19, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.975, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.975, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 }, { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "gildong.hong@example.com", "value_start": 3, "value_end": 27, "entropy": 3.77206 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.975, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.689, "line_data_list": [ { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PWD", "variable_start": 43, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.689, "line_data_list": [ { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PWD", "variable_start": 43, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 }, { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ID", "variable_start": 0, "variable_end": 2, "value": "gildong.hong@any.example.com", "value_start": 3, "value_end": 31, "entropy": 3.84237 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.689, "line_data_list": [ { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PWD", "variable_start": 43, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 22, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 42, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 22, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 42, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 23, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 37, "variable_end": 39, "value": "IhqSb1Gg", "value_start": 40, "value_end": 48, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 23, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 37, "variable_end": 39, "value": "IhqSb1Gg", "value_start": 40, "value_end": 48, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.958, "line_data_list": [ { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.958, "line_data_list": [ { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 }, { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "id", "variable_start": 1, "variable_end": 3, "value": "gildong.hong@example.com", "value_start": 4, "value_end": 28, "entropy": 3.77206 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.958, "line_data_list": [ { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 25, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 41, "variable_end": 49, "value": "IhqSb1Gg", "value_start": 50, "value_end": 58, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 25, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 41, "variable_end": 49, "value": "IhqSb1Gg", "value_start": 50, "value_end": 58, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "IhqSb1Gg", "value_start": 48, "value_end": 56, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "IhqSb1Gg", "value_start": 48, "value_end": 56, "entropy": 3.0 }, { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "gildong.hong@example.com", "value_start": 3, "value_end": 27, "entropy": 3.77206 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "IhqSb1Gg", "value_start": 48, "value_end": 56, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "98.76.54.32 ANY_PW:IhqSb1Gg", "line_num": 34, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANY_PW", "variable_start": 12, "variable_end": 18, "value": "IhqSb1Gg", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "98.76.54.32 ANY_PW:IhqSb1Gg", "line_num": 34, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 16, "variable_end": 18, "value": "IhqSb1Gg", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.943, "line_data_list": [ { "line": "98.76.54.32(ID/PW:IhqSb1Gg)", "line_num": 36, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "IhqSb1Gg", "value_start": 18, "value_end": 26, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.943, "line_data_list": [ { "line": "98.76.54.32(ID/PW:IhqSb1Gg)", "line_num": 36, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "IhqSb1Gg", "value_start": 18, "value_end": 26, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", "line_num": 38, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 26, "variable_end": 29, "value": "IhqSb1Gg", "value_start": 30, "value_end": 38, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", "line_num": 38, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 26, "variable_end": 29, "value": "IhqSb1Gg", "value_start": 30, "value_end": 38, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.035, "line_data_list": [ { "line": "ID/Pass:xxxx:master/IhqSb1Gg xxxx:master/IhqSb1Gg", "line_num": 45, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "xxxx:master/IhqSb1Gg", "value_start": 8, "value_end": 28, "entropy": 3.92193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.864, "line_data_list": [ { "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANYpw", "variable_start": 8, "variable_end": 13, "value": "IhqSb1Ga", "value_start": 14, "value_end": 22, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.864, "line_data_list": [ { "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "IhqSb1Ga", "value_start": 14, "value_end": 22, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", "line_num": 47, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", "line_num": 47, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.943, "line_data_list": [ { "line": "98.76.54.32(master/IhqSb1Gg,master/IhqSb1Gg)", "line_num": 48, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": null, "variable_start": -1, "variable_end": -1, "value": "IhqSb1Gg,", "value_start": 19, "value_end": 28, "entropy": 3.16993 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "98.76.54.32(master/IhqSb1Gg master/IhqSb1Gg)", "line_num": 49, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": null, "variable_start": -1, "variable_end": -1, "value": "IhqSb1Gg", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.982, "line_data_list": [ { "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", "line_num": 51, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.982, "line_data_list": [ { "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", "line_num": 51, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", "line_num": 56, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", "line_num": 56, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", "line_num": 61, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ANY_pwd", "variable_start": 14, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", "line_num": 61, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 18, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Acount name:xxxx Initial Password:IhqSb1Gg", "line_num": 62, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Password", "variable_start": 25, "variable_end": 33, "value": "IhqSb1Gg", "value_start": 34, "value_end": 42, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Acount name:xxxx Initial Password:IhqSb1Gg", "line_num": 62, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Password", "variable_start": 25, "variable_end": 33, "value": "IhqSb1Gg", "value_start": 34, "value_end": 42, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.951, "line_data_list": [ { "line": "Access wifi:xxxx(PW:IhqSb1Gg)", "line_num": 63, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.951, "line_data_list": [ { "line": "Access wifi:xxxx(PW:IhqSb1Gg)", "line_num": 63, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "-User:master -PasswordANY:IhqSb1Gg", "line_num": 66, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PasswordANY", "variable_start": 14, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.979, "line_data_list": [ { "line": "98.76.54.32(ID/PW:master/IhqSb1Gg)", "line_num": 70, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ID/PW", "variable_start": 12, "variable_end": 17, "value": "IhqSb1Gg", "value_start": 25, "value_end": 33, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.013, "line_data_list": [ { "line": "98.76.54.32(ID/PW:master/IhqSb1Gg)", "line_num": 70, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "master/IhqSb1Gg", "value_start": 18, "value_end": 33, "entropy": 3.90689 } ] }, { "rule": "ID_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.43, "line_data_list": [ { "line": "ID/PW master(IhqSb1Gg)", "line_num": 72, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ID/PW", "variable_start": 0, "variable_end": 5, "value": "IhqSb1Gg", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 73, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 73, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "master@98.76.54.32,PW:IhqSb1Gg", "line_num": 74, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "master@98.76.54.32,PW:IhqSb1Gg", "line_num": 74, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "98.76.54.32 pw:IhqSb1Gg", "line_num": 75, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "98.76.54.32 pw:IhqSb1Gg", "line_num": 75, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.938, "line_data_list": [ { "line": "config:xxxx,PW:IhqSb1Gg", "line_num": 78, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.938, "line_data_list": [ { "line": "config:xxxx,PW:IhqSb1Gg", "line_num": 78, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 82, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 82, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 35, "variable_end": 37, "value": "IhqSb1Gg", "value_start": 38, "value_end": 46, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 35, "variable_end": 37, "value": "IhqSb1Gg", "value_start": 38, "value_end": 46, "entropy": 3.0 }, { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "gildong.hong@xxx.com", "value_start": 3, "value_end": 23, "entropy": 3.40869 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 35, "variable_end": 37, "value": "IhqSb1Gg", "value_start": 38, "value_end": 46, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 84, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 84, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", "line_num": 85, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", "line_num": 85, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", "line_num": 87, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", "line_num": 87, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", "line_num": 90, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", "line_num": 90, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", "line_num": 93, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", "line_num": 93, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 94, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 37, "variable_end": 45, "value": "IhqSb1Gg", "value_start": 46, "value_end": 54, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 94, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 37, "variable_end": 45, "value": "IhqSb1Gg", "value_start": 46, "value_end": 54, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", "line_num": 96, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Password", "variable_start": 36, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", "line_num": 96, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "Password", "variable_start": 36, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", "line_num": 97, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pass", "variable_start": 37, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 100, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 100, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", "line_num": 101, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pass", "variable_start": 40, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 35, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 35, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 }, { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "id", "variable_start": 0, "variable_end": 2, "value": "gildong.hong@xxx.com", "value_start": 3, "value_end": 23, "entropy": 3.40869 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 35, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", "line_num": 104, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", "line_num": 104, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.98, "line_data_list": [ { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 44, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.98, "line_data_list": [ { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 44, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 }, { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "ID", "variable_start": 4, "variable_end": 6, "value": "gildong.hong@example.com", "value_start": 7, "value_end": 31, "entropy": 3.77206 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.98, "line_data_list": [ { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 44, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", "line_num": 106, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", "line_num": 106, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", "line_num": 108, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 23, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", "line_num": 108, "path": "./tests/samples/doc_various", "info": "FILE:./tests/samples/doc_various|RAW", "variable": "pw", "variable_start": 23, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "line_num": 1, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "value_start": 10, "value_end": 46, "entropy": 4.68354 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "line_num": 2, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "value_start": 10, "value_end": 46, "entropy": 3.89106 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "line_num": 3, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "value_start": 10, "value_end": 51, "entropy": 4.78414 } ] }, { "rule": "Docker Swarm Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "line_num": 4, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "value_start": 10, "value_end": 95, "entropy": 5.06757 } ] }, { "rule": "Docker Swarm Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "line_num": 6, "path": "./tests/samples/docker", "info": "FILE:./tests/samples/docker|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "value_start": 10, "value_end": 62, "entropy": 4.95515 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password is NsIdksKJdj\ttoken is bace4d19-fa7e-b2e4-1afe-9129474bcd81\tPassword: \"Dw7^&ndgf", "line_num": 16, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": "textpassword", "variable_start": 0, "variable_end": 12, "value": "Df34D<345&>gf", "value_start": 14, "value_end": 27, "entropy": 3.08506 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.038, "line_data_list": [ { "line": "mypass is Mkd<.dI34s&3", "line_num": 19, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": "mypass", "variable_start": 0, "variable_end": 6, "value": "Mkd<.dI34s&3", "value_start": 10, "value_end": 22, "entropy": 3.25163 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.035, "line_data_list": [ { "line": "Heading\tLorem ipsum dolor sit amet, secret is \"Nner,4<563^%$&5w", "line_num": 31, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": ">4<563^%$&5w", "value_start": 8, "value_end": 20, "entropy": 3.4183 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "pass: Dsfgh%$d<>s&", "line_num": 34, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": "pass", "variable_start": 0, "variable_end": 4, "value": "Dsfgh%$d<>s&", "value_start": 6, "value_end": 18, "entropy": 3.4183 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "line_num": 45, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "value_start": 16, "value_end": 52, "entropy": 3.68703 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "line_num": 45, "path": "./tests/samples/drawio", "info": "FILE:./tests/samples/drawio|MXFILE", "variable": "secret", "variable_start": 6, "variable_end": 12, "value": "ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "value_start": 16, "value_end": 52, "entropy": 3.68703 } ] }, { "rule": "Dropbox API secret (long term)", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", "line_num": 1, "path": "./tests/samples/dropbox_api_secret_long_term", "info": "FILE:./tests/samples/dropbox_api_secret_long_term|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", "value_start": 9, "value_end": 73, "entropy": 4.89362 } ] }, { "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", "line_num": 1, "path": "./tests/samples/dropbox_app_secret", "info": "FILE:./tests/samples/dropbox_app_secret|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wpv1jq9xwanbn3n", "value_start": 24, "value_end": 39, "entropy": 3.45656 } ] }, { "rule": "Dropbox OAuth2 API Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", "line_num": 1, "path": "./tests/samples/dropbox_oauth_token", "info": "FILE:./tests/samples/dropbox_oauth_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", "value_start": 15, "value_end": 153, "entropy": 5.61894 } ] }, { "rule": "Dynatrace API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, "path": "./tests/samples/dynatrace_api.hs", "info": "FILE:./tests/samples/dynatrace_api.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "value_start": 0, "value_end": 96, "entropy": 4.93241 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.965, "line_data_list": [ { "line": "# this is encrypted key that should be not found {\"secretKey\": \"ENC(2dfRFqV/cS6TzRd+JyO=)\"}", "line_num": 1, "path": "./tests/samples/encrypted_credential", "info": "FILE:./tests/samples/encrypted_credential|RAW", "variable": "secretKey", "variable_start": 51, "variable_end": 60, "value": "ENC(2dfRFqV/cS6TzRd+JyO=", "value_start": 64, "value_end": 88, "entropy": 4.4183 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "FILE:./tests/samples/facebook_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.975, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "FILE:./tests/samples/facebook_key|RAW", "variable": "GI_REO_GI_FACEBOOK_TOKEN", "variable_start": 0, "variable_end": 24, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Facebook App Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "line_num": 2, "path": "./tests/samples/facebook_key", "info": "FILE:./tests/samples/facebook_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "value_start": 0, "value_end": 44, "entropy": 4.60694 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "line_num": 1, "path": "./tests/samples/figma", "info": "FILE:./tests/samples/figma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "value_start": 0, "value_end": 45, "entropy": 4.98619 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "line_num": 2, "path": "./tests/samples/figma", "info": "FILE:./tests/samples/figma|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "value_start": 0, "value_end": 45, "entropy": 4.85286 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test-app-domain-42.firebaseapp.com", "line_num": 1, "path": "./tests/samples/firebase_domain", "info": "FILE:./tests/samples/firebase_domain|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test-app-domain-42.firebaseapp.com", "value_start": 0, "value_end": 34, "entropy": 3.98423 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test2.io.firebaseio.com", "line_num": 2, "path": "./tests/samples/firebase_domain", "info": "FILE:./tests/samples/firebase_domain|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test2.io.firebaseio.com", "value_start": 0, "value_end": 23, "entropy": 3.52271 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", "line_num": 1, "path": "./tests/samples/github_classic_token", "info": "FILE:./tests/samples/github_classic_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ghp_00000000000000000000000000000004WZ4EQ", "value_start": 0, "value_end": 41, "entropy": 1.56292 } ] }, { "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/github_fine_granted_token", "info": "FILE:./tests/samples/github_fine_granted_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 93, "entropy": 5.41519 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token", "line_num": 2, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP", "value_start": 0, "value_end": 39, "entropy": 4.59259 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret", "line_num": 3, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc", "value_start": 0, "value_end": 70, "entropy": 4.0466 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token", "line_num": 4, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gldt-9BeUoeWu2V9uUS3uLoMy", "value_start": 0, "value_end": 25, "entropy": 4.13366 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token", "line_num": 5, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrt-2CR8_eVxiio-1QmzPZwa", "value_start": 0, "value_end": 25, "entropy": 4.48386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "line_num": 6, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "value_start": 0, "value_end": 31, "entropy": 4.54275 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token", "line_num": 7, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL", "value_start": 0, "value_end": 28, "entropy": 4.42325 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token", "line_num": 8, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", "value_start": 0, "value_end": 46, "entropy": 3.96956 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glft-Aafqn5A31G-2VipZMh28 # Feed token", "line_num": 9, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glft-Aafqn5A31G-2VipZMh28", "value_start": 0, "value_end": 25, "entropy": 4.32386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token", "line_num": 10, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glimt-1jpqzsnw2n71om0r9kgt06os3", "value_start": 0, "value_end": 31, "entropy": 4.43807 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token", "line_num": 11, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg", "value_start": 0, "value_end": 58, "entropy": 5.18979 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies", "line_num": 12, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2", "value_start": 0, "value_end": 48, "entropy": 4.32185 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsoat-971om0ecn5A386r9k481 # SCIM Tokens", "line_num": 13, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsoat-971om0ecn5A386r9k481", "value_start": 0, "value_end": 27, "entropy": 4.45859 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token", "line_num": 14, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glffct-AnRWYdo3Si_Xm2Q6n7zu", "value_start": 0, "value_end": 27, "entropy": 4.60674 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token", "line_num": 15, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr", "value_start": 0, "value_end": 47, "entropy": 5.18204 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token", "line_num": 16, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ", "value_start": 0, "value_end": 38, "entropy": 4.70175 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token", "line_num": 18, "path": "./tests/samples/gitlab_prefix_token", "info": "FILE:./tests/samples/gitlab_prefix_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", "value_start": 0, "value_end": 29, "entropy": 4.58212 } ] }, { "rule": "Google API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key", "line_num": 1, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315", "value_start": 0, "value_end": 39, "entropy": 4.35298 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # Google OAuth Secret", "line_num": 2, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 35, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token", "line_num": 3, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S", "value_start": 0, "value_end": 51, "entropy": 5.01537 } ] }, { "rule": "Google OAuth Refresh Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh To", "line_num": 4, "path": "./tests/samples/google_creds", "info": "FILE:./tests/samples/google_creds|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_", "value_start": 0, "value_end": 102, "entropy": 5.43821 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "line_num": 2, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "value_start": 0, "value_end": 72, "entropy": 4.80827 }, { "line": "4L2QMyTm6Rr0o46ytGiReoG1", "line_num": 4, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4L2QMyTm6Rr0o46ytGiReoG1", "value_start": 0, "value_end": 24, "entropy": 4.08496 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", "value_start": 6, "value_end": 78, "entropy": 4.80827 }, { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "FILE:./tests/samples/google_multi|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Grafana Access Policy Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "fana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", "line_num": 1, "path": "./tests/samples/grafana_access_policy_token", "info": "FILE:./tests/samples/grafana_access_policy_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", "value_start": 18, "value_end": 130, "entropy": 5.15841 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", "line_num": 1, "path": "./tests/samples/grafana_provisioned_api_key", "info": "FILE:./tests/samples/grafana_provisioned_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", "value_start": 11, "value_end": 107, "entropy": 3.81531 } ] }, { "rule": "Grafana Service Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "line_num": 1, "path": "./tests/samples/grafana_service_accounts", "info": "FILE:./tests/samples/grafana_service_accounts|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, "value_end": 46, "entropy": 4.71879 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/groq_api_key", "info": "FILE:./tests/samples/groq_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.01691 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/groq_api_key", "info": "FILE:./tests/samples/groq_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 3, "path": "./tests/samples/groq_api_key", "info": "FILE:./tests/samples/groq_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Hashicorp Terraform Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 1, "path": "./tests/samples/hashicorp", "info": "FILE:./tests/samples/hashicorp|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 90, "entropy": 5.47059 } ] }, { "rule": "Hashicorp Vault Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 2, "path": "./tests/samples/hashicorp", "info": "FILE:./tests/samples/hashicorp|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 94, "entropy": 5.53423 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "line_num": 1, "path": "./tests/samples/heroku", "info": "FILE:./tests/samples/heroku|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "value_start": 0, "value_end": 65, "entropy": 5.32822 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "line_num": 2, "path": "./tests/samples/heroku", "info": "FILE:./tests/samples/heroku|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "value_start": 0, "value_end": 41, "entropy": 4.0555 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/huggingface", "info": "FILE:./tests/samples/huggingface|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.70256 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "url/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/part", "line_num": 2, "path": "./tests/samples/huggingface", "info": "FILE:./tests/samples/huggingface|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 4, "value_end": 41, "entropy": 4.77702 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "line_num": 6, "path": "./tests/samples/huggingface", "info": "FILE:./tests/samples/huggingface|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "value_start": 0, "value_end": 37, "entropy": 4.62811 } ] }, { "rule": "Instagram Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "line_num": 1, "path": "./tests/samples/instagram_access_token", "info": "FILE:./tests/samples/instagram_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, "value_end": 162, "entropy": 5.23164 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.962, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/iso_ir_111.patch", "info": "FILE:./tests/samples/iso_ir_111.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "line_num": 1, "path": "./tests/samples/jfrog_p", "info": "FILE:./tests/samples/jfrog_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "value_start": 0, "value_end": 64, "entropy": 5.28891 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "line_num": 2, "path": "./tests/samples/jfrog_p", "info": "FILE:./tests/samples/jfrog_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "value_start": 0, "value_end": 73, "entropy": 5.35394 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "line_num": 1, "path": "./tests/samples/jira_confluence_pat", "info": "FILE:./tests/samples/jira_confluence_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 63, "value_end": 107, "entropy": 4.60694 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "9VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZ", "line_num": 2, "path": "./tests/samples/jira_confluence_pat", "info": "FILE:./tests/samples/jira_confluence_pat|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 67, "value_end": 111, "entropy": 4.60694 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0", "line_num": 1, "path": "./tests/samples/json_web_key", "info": "FILE:./tests/samples/json_web_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0", "value_start": 0, "value_end": 407, "entropy": 5.27189 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, "path": "./tests/samples/json_web_token", "info": "FILE:./tests/samples/json_web_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "value_start": 10, "value_end": 75, "entropy": 5.03815 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"kty\": \"[EC]\",", "line_num": 3, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"[EC", "value_start": 8, "value_end": 19, "entropy": 3.02717 }, { "line": "\"d\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\"", "line_num": 4, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-", "value_start": 14, "value_end": 57, "entropy": 4.87953 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"kty\": \"RSA\",", "line_num": 7, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"RSA\"", "value_start": 8, "value_end": 20, "entropy": 2.9183 }, { "line": "\"d\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\"", "line_num": 10, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY", "value_start": 14, "value_end": 100, "entropy": 5.43459 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"kty\": \"oct\",", "line_num": 13, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"oct\"", "value_start": 8, "value_end": 20, "entropy": 2.75163 }, { "line": "\"k\": \"WrMwQfoNaHTgXU5fZvRGAD\"", "line_num": 16, "path": "./tests/samples/jwk.json", "info": "FILE:./tests/samples/jwk.json|RAW", "variable": "k", "variable_start": 9, "variable_end": 10, "value": "WrMwQfoNaHTgXU5fZvRGAD", "value_start": 14, "value_end": 36, "entropy": 4.36852 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 12, "value_end": 47, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 2, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 3, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 4, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 5, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 6, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/key.go", "info": "FILE:./tests/samples/key.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "line_num": 1, "path": "./tests/samples/key.php", "info": "FILE:./tests/samples/key.php|RAW", "variable": "key", "variable_start": 1, "variable_end": 4, "value": "gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "value_start": 8, "value_end": 64, "entropy": 4.96772 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.776, "line_data_list": [ { "line": "pkey = (\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\"", "line_num": 1, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": "pkey", "variable_start": 0, "variable_end": 4, "value": "(\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\"", "value_start": 7, "value_end": 72, "entropy": 4.80708 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "print(\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\")", "line_num": 7, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": "key", "variable_start": 34, "variable_end": 37, "value": "dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB", "value_start": 38, "value_end": 93, "entropy": 4.96282 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "print(\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\")", "line_num": 7, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": "key", "variable_start": 34, "variable_end": 37, "value": "dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB", "value_start": 38, "value_end": 93, "entropy": 4.96282 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "PKEY = \"\"\"-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 9, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 10, "value_end": 45, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 10, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 11, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 12, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 13, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 14, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----\"\"\"", "line_num": 15, "path": "./tests/samples/key.py", "info": "FILE:./tests/samples/key.py|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "\"key\": \"api_key\",", "line_num": 2, "path": "./tests/samples/key_value.json", "info": "FILE:./tests/samples/key_value.json|RAW", "variable": "key", "variable_start": 5, "variable_end": 8, "value": "api_key", "value_start": 12, "value_end": 19, "entropy": 2.80735 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.433, "line_data_list": [ { "line": "\"pass_mask32\": \"0x31c45018\",", "line_num": 7, "path": "./tests/samples/key_value.json", "info": "FILE:./tests/samples/key_value.json|RAW", "variable": "pass_mask32", "variable_start": 9, "variable_end": 20, "value": "0x31c45018", "value_start": 24, "value_end": 34, "entropy": 2.92193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.529, "line_data_list": [ { "line": "\"pass_mask64\": \"0x81103c1452dd61cd\",", "line_num": 8, "path": "./tests/samples/key_value.json", "info": "FILE:./tests/samples/key_value.json|RAW", "variable": "pass_mask64", "variable_start": 9, "variable_end": 20, "value": "0x81103c1452dd61cd", "value_start": 24, "value_end": 42, "entropy": 3.2391 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "line_num": 1, "path": "./tests/samples/llama", "info": "FILE:./tests/samples/llama|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "value_start": 0, "value_end": 52, "entropy": 5.03958 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "line_num": 2, "path": "./tests/samples/llama", "info": "FILE:./tests/samples/llama|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "value_start": 0, "value_end": 52, "entropy": 5.05602 } ] }, { "rule": "MailChimp API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "mailchimp = \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\"", "line_num": 1, "path": "./tests/samples/mailchimp_key", "info": "FILE:./tests/samples/mailchimp_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36", "value_start": 13, "value_end": 50, "entropy": 4.75662 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "key-a25a4ac62a074cd52c668c6b9937cf40", "line_num": 1, "path": "./tests/samples/mailgun", "info": "FILE:./tests/samples/mailgun|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "key-a25a4ac62a074cd52c668c6b9937cf40", "value_start": 0, "value_end": 36, "entropy": 3.91661 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "line_num": 2, "path": "./tests/samples/mailgun", "info": "FILE:./tests/samples/mailgun|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "value_start": 0, "value_end": 50, "entropy": 3.85669 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "FILE:./tests/samples/multifile.patch|RAW", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "FILE:./tests/samples/multiline.patch|RAW", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Netlify Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "line_num": 1, "path": "./tests/samples/netlify", "info": "FILE:./tests/samples/netlify|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "value_start": 0, "value_end": 40, "entropy": 4.61531 } ] }, { "rule": "NKEY Seed", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "line_num": 2, "path": "./tests/samples/nkey_seed", "info": "FILE:./tests/samples/nkey_seed|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "value_start": 3, "value_end": 61, "entropy": 4.55826 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password: F1lT3ReDw17hQoT3s", "line_num": 3, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "F1lT3ReDw17hQoT3s", "value_start": 10, "value_end": 27, "entropy": 3.73452 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password: F1lT3ReDw17hQoT3s", "line_num": 3, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "F1lT3ReDw17hQoT3s", "value_start": 10, "value_end": 27, "entropy": 3.73452 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\", "line_num": 7, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "key_wrap", "variable_start": 0, "variable_end": 8, "value": "KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\", "value_start": 12, "value_end": 45, "entropy": 4.18789 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK", "line_num": 11, "path": "./tests/samples/nonce.py", "info": "FILE:./tests/samples/nonce.py|RAW", "variable": "key_multi", "variable_start": 0, "variable_end": 9, "value": "KJHfdjs8767gr54534wsFHGf5hJKhK", "value_start": 15, "value_end": 45, "entropy": 4.12323 } ] }, { "rule": "Notion Integration Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "line_num": 1, "path": "./tests/samples/notion", "info": "FILE:./tests/samples/notion|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "value_start": 0, "value_end": 50, "entropy": 5.06876 } ] }, { "rule": "NPM Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "positive: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", "line_num": 2, "path": "./tests/samples/npm", "info": "FILE:./tests/samples/npm|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 9, "value_end": 49, "entropy": 4.80306 } ] }, { "rule": "NTLM Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "line_num": 1, "path": "./tests/samples/ntlm", "info": "FILE:./tests/samples/ntlm|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "value_start": 10, "value_end": 190, "entropy": 3.79713 } ] }, { "rule": "NuGet API key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'", "line_num": 1, "path": "./tests/samples/nuget_api_key", "info": "FILE:./tests/samples/nuget_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam", "value_start": 5, "value_end": 51, "entropy": 4.56129 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/open_ai_token", "info": "FILE:./tests/samples/open_ai_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 51, "entropy": 5.22625 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "line_num": 3, "path": "./tests/samples/open_ai_token", "info": "FILE:./tests/samples/open_ai_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "value_start": 0, "value_end": 56, "entropy": 5.25816 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "line_num": 7, "path": "./tests/samples/open_ai_token", "info": "FILE:./tests/samples/open_ai_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "value_start": 0, "value_end": 56, "entropy": 4.12555 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "WXFES7QNTET5DQYC", "line_num": 1, "path": "./tests/samples/otp_2fa", "info": "FILE:./tests/samples/otp_2fa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WXFES7QNTET5DQYC", "value_start": 0, "value_end": 16, "entropy": 3.625 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "line_num": 2, "path": "./tests/samples/otp_2fa", "info": "FILE:./tests/samples/otp_2fa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "value_start": 0, "value_end": 32, "entropy": 4.14032 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "uth.myapp.com/v3/access_token?app_id=my-client-id&app_secret=my-client-password&code=q4C1a20qS&redirect_uri=http%3A%2F%2Flocalho", "line_num": 3, "path": "./tests/samples/pass_filtered", "info": "FILE:./tests/samples/pass_filtered|RAW", "variable": "app_secret", "variable_start": 60, "variable_end": 70, "value": "my-client-password", "value_start": 71, "value_end": 89, "entropy": 3.9477 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = \"0xAb19D82E7f546cC3\"", "line_num": 4, "path": "./tests/samples/pass_filtered", "info": "FILE:./tests/samples/pass_filtered|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "0xAb19D82E7f546cC3", "value_start": 12, "value_end": 30, "entropy": 4.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "password_id = 2938479", "line_num": 5, "path": "./tests/samples/pass_filtered", "info": "FILE:./tests/samples/pass_filtered|RAW", "variable": "password_id", "variable_start": 0, "variable_end": 11, "value": "2938479", "value_start": 14, "value_end": 21, "entropy": 2.52164 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.844, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "FILE:./tests/samples/passwd.groovy|RAW", "variable": "gi_reo_gi_passwd", "variable_start": 0, "variable_end": 16, "value": "cAc48k1Zd7", "value_start": 20, "value_end": 30, "entropy": 3.12193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.844, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "FILE:./tests/samples/passwd.groovy|RAW", "variable": "passwd", "variable_start": 10, "variable_end": 16, "value": "cAc48k1Zd7", "value_start": 20, "value_end": 30, "entropy": 3.12193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "FILE:./tests/samples/passwd.groovy|RAW", "variable": "password_confirmation", "variable_start": 33, "variable_end": 54, "value": "cAc48k1Zd7", "value_start": 58, "value_end": 68, "entropy": 3.12193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.652, "line_data_list": [ { "line": "password = \"cackle!\"", "line_num": 1, "path": "./tests/samples/password.gradle", "info": "FILE:./tests/samples/password.gradle|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 12, "value_end": 19, "entropy": 2.52164 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.962, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 9, "path": "./tests/samples/password.patch", "info": "FILE:./tests/samples/password.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = \"MYPSWRD!@#$%^&*\"", "line_num": 1, "path": "./tests/samples/password.tfvars", "info": "FILE:./tests/samples/password.tfvars|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "MYPSWRD!@#$%^&*", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "password = \"abc\"", "line_num": 3, "path": "./tests/samples/password_FALSE", "info": "FILE:./tests/samples/password_FALSE|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "\"abc\"", "value_start": 11, "value_end": 16, "entropy": 1.92193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.964, "line_data_list": [ { "line": "MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA", "line_num": 1, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "MYSQLPASS", "variable_start": 0, "variable_end": 9, "value": "Ce7shE0ENPiBlE_EdEose0cBAA", "value_start": 11, "value_end": 37, "entropy": 3.8693 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.973, "line_data_list": [ { "line": "my_pw: nCzx8A8#!", "line_num": 2, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "my_pw", "variable_start": 0, "variable_end": 5, "value": "nCzx8A8#!", "value_start": 7, "value_end": 16, "entropy": 2.9477 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.973, "line_data_list": [ { "line": "my_pw: nCzx8A8#!", "line_num": 2, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "pw", "variable_start": 3, "variable_end": 5, "value": "nCzx8A8#!", "value_start": 7, "value_end": 16, "entropy": 2.9477 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "def connect(passwd: str = \"cq2tPr1a2\"): # python default arg", "line_num": 4, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "str = ", "value_start": 20, "value_end": 26, "entropy": 2.25163 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "if passworsd == \"q4c1a2oPd\": # __eq__ separator", "line_num": 5, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "q4c1a2oPd", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if passworsd != \"x6s7djtEa\": # __ne__ separator", "line_num": 6, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "x6s7djtEa", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password=2bkJgtJDiLcq1t", "line_num": 7, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "2bkJgtJDiLcq1t", "value_start": 9, "value_end": 23, "entropy": 3.52164 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password=2bkJgtJDiLcq1t", "line_num": 7, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "2bkJgtJDiLcq1t", "value_start": 9, "value_end": 23, "entropy": 3.52164 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "passin", "variable_start": 33, "variable_end": 39, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "pass", "variable_start": 41, "variable_end": 45, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.967, "line_data_list": [ { "line": "MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;", "line_num": 12, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "MYSQL_DATABASE_PASSWORD", "variable_start": 25, "variable_end": 48, "value": "2IWJD88FH4Y;", "value_start": 49, "value_end": 61, "entropy": 3.4183 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.978, "line_data_list": [ { "line": "WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "line_num": 25, "path": "./tests/samples/password_TRUE", "info": "FILE:./tests/samples/password_TRUE|RAW", "variable": "WPA2_PASSWORD", "variable_start": 0, "variable_end": 13, "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "value_start": 15, "value_end": 79, "entropy": 3.67082 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.962, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/password_utf16.patch", "info": "FILE:./tests/samples/password_utf16.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.237, "line_data_list": [ { "line": "+ \"password\": \"dkajc\u00f61\"", "line_num": 9, "path": "./tests/samples/password_western.patch", "info": "FILE:./tests/samples/password_western.patch|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajc\u00f61", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "PayPal Braintree Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "line_num": 1, "path": "./tests/samples/paypal_key", "info": "FILE:./tests/samples/paypal_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "value_start": 0, "value_end": 73, "entropy": 4.39985 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", "line_num": 2, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 13, "value_end": 44, "entropy": 3.38229 }, { "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "line_num": 3, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "value_start": 0, "value_end": 108, "entropy": 5.52555 }, { "line": "+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "line_num": 4, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "value_start": 0, "value_end": 110, "entropy": 5.49388 }, { "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "line_num": 5, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "value_start": 0, "value_end": 106, "entropy": 5.44383 }, { "line": "\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "line_num": 6, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "value_start": 0, "value_end": 90, "entropy": 5.53586 }, { "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "line_num": 7, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "value_start": 0, "value_end": 96, "entropy": 5.46977 }, { "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "line_num": 8, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "value_start": 0, "value_end": 110, "entropy": 5.55951 }, { "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "line_num": 9, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "value_start": 0, "value_end": 112, "entropy": 5.49108 }, { "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "line_num": 10, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "value_start": 0, "value_end": 114, "entropy": 5.57587 }, { "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "line_num": 11, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "value_start": 0, "value_end": 63, "entropy": 4.72341 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "line_num": 14, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "value_start": 16, "value_end": 262, "entropy": 5.56558 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "line_num": 27, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 47, "entropy": 3.8375 }, { "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "line_num": 28, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, "value_end": 120, "entropy": 3.30679 }, { "line": "-----END LOW ENTROPY PRIVATE KEY-----", "line_num": 29, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 37, "entropy": 3.55488 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "* -----BEGIN PGP PRIVATE KEY BLOCK-----", "line_num": 35, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 42, "entropy": 3.62218 }, { "line": "* Version: GnuPG v1.4.12 (GNU/Linux)", "line_num": 36, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": " * Version: GnuPG v1.4.12 (GNU/Linux)", "value_start": 0, "value_end": 39, "entropy": 4.33255 }, { "line": "", "line_num": 37, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "", "value_start": 0, "value_end": 0, "entropy": 0.0 }, { "line": "* KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "line_num": 38, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": "* SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "line_num": 39, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": "//\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "line_num": 40, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "value_start": 4, "value_end": 68, "entropy": 5.20695 }, { "line": "///\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "line_num": 41, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "value_start": 5, "value_end": 69, "entropy": 5.13876 }, { "line": "// UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "line_num": 42, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "value_start": 6, "value_end": 70, "entropy": 5.19868 }, { "line": "/// q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "line_num": 43, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "value_start": 7, "value_end": 71, "entropy": 5.13876 }, { "line": "// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/", "line_num": 44, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1", "value_start": 7, "value_end": 71, "entropy": 5.17157 }, { "line": "# # # * 874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "line_num": 45, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#+#+#+# * IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "line_num": 46, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "value_start": 11, "value_end": 75, "entropy": 5.17157 }, { "line": "+ 'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +", "line_num": 47, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi", "value_start": 6, "value_end": 70, "entropy": 5.10751 }, { "line": "+\"\" +\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\"+", "line_num": 48, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh", "value_start": 8, "value_end": 72, "entropy": 5.10493 }, { "line": "* pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "line_num": 49, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "value_start": 5, "value_end": 69, "entropy": 5.23407 }, { "line": "* gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "line_num": 50, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "value_start": 5, "value_end": 69, "entropy": 5.15977 }, { "line": "* QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "line_num": 51, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "value_start": 5, "value_end": 69, "entropy": 5.20892 }, { "line": "* iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "line_num": 52, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "value_start": 5, "value_end": 69, "entropy": 4.94102 }, { "line": "* 5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "line_num": 53, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "value_start": 5, "value_end": 69, "entropy": 5.28891 }, { "line": "* HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "line_num": 54, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": "* pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "line_num": 55, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": "* ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "line_num": 56, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": "* OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "line_num": 57, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "value_start": 5, "value_end": 69, "entropy": 5.04087 }, { "line": "* idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "line_num": 58, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "value_start": 5, "value_end": 69, "entropy": 5.14798 }, { "line": "* TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "line_num": 59, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "value_start": 5, "value_end": 69, "entropy": 5.17923 }, { "line": "* /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "line_num": 60, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "value_start": 5, "value_end": 69, "entropy": 4.99017 }, { "line": "* OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "line_num": 61, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "value_start": 5, "value_end": 69, "entropy": 5.21461 }, { "line": "* 4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "line_num": 62, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "value_start": 5, "value_end": 69, "entropy": 5.07782 }, { "line": "* sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "line_num": 63, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "value_start": 5, "value_end": 69, "entropy": 5.10907 }, { "line": "* ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "line_num": 64, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "value_start": 5, "value_end": 69, "entropy": 5.09314 }, { "line": "* n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "line_num": 65, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "value_start": 5, "value_end": 49, "entropy": 4.98773 }, { "line": "* =JG+I", "line_num": 66, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "=JG+I", "value_start": 5, "value_end": 10, "entropy": 2.32193 }, { "line": "* -----END PGP PRIVATE KEY BLOCK-----", "line_num": 67, "path": "./tests/samples/pem_key", "info": "FILE:./tests/samples/pem_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 40, "entropy": 3.62274 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "k = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 1, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 7, "value_end": 34, "entropy": 3.20029 }, { "line": "+ \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 2, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": "+ \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": "+ \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": "+ \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": "+ \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": "+ \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": "+ \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": "+ \"aAjRMKT7uCM=\\\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": "+ \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 10, "path": "./tests/samples/pem_key.p.code", "info": "FILE:./tests/samples/pem_key.p.code|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "#6 0.245 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 9, "value_end": 36, "entropy": 3.20029 }, { "line": "#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "line_num": 3, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "value_start": 9, "value_end": 73, "entropy": 4.69647 }, { "line": "#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "line_num": 4, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "value_start": 9, "value_end": 73, "entropy": 4.99586 }, { "line": "#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "line_num": 5, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "value_start": 9, "value_end": 73, "entropy": 5.13462 }, { "line": "#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "line_num": 6, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "value_start": 9, "value_end": 73, "entropy": 5.12086 }, { "line": "#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "line_num": 7, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "value_start": 9, "value_end": 73, "entropy": 4.78866 }, { "line": "#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "line_num": 8, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "value_start": 9, "value_end": 73, "entropy": 4.74561 }, { "line": "#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "line_num": 9, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "value_start": 9, "value_end": 73, "entropy": 4.89577 }, { "line": "#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "line_num": 10, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "value_start": 9, "value_end": 73, "entropy": 4.81189 }, { "line": "#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "line_num": 11, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "value_start": 9, "value_end": 73, "entropy": 4.74717 }, { "line": "#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "line_num": 12, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "value_start": 9, "value_end": 73, "entropy": 4.72227 }, { "line": "#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "line_num": 13, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "value_start": 9, "value_end": 73, "entropy": 4.71244 }, { "line": "#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "line_num": 14, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "value_start": 9, "value_end": 73, "entropy": 4.85947 }, { "line": "#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "line_num": 15, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "value_start": 9, "value_end": 73, "entropy": 4.86673 }, { "line": "#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "line_num": 16, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "value_start": 9, "value_end": 73, "entropy": 4.72006 }, { "line": "#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "line_num": 17, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "value_start": 9, "value_end": 73, "entropy": 4.49369 }, { "line": "#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "line_num": 18, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "value_start": 9, "value_end": 73, "entropy": 4.85141 }, { "line": "#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "line_num": 19, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "value_start": 9, "value_end": 73, "entropy": 4.92157 }, { "line": "#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "line_num": 20, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "value_start": 9, "value_end": 73, "entropy": 4.71436 }, { "line": "#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "line_num": 21, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "value_start": 9, "value_end": 73, "entropy": 4.69102 }, { "line": "#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "line_num": 22, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "value_start": 9, "value_end": 73, "entropy": 4.55202 }, { "line": "#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "line_num": 23, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "value_start": 9, "value_end": 73, "entropy": 4.70776 }, { "line": "#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "line_num": 24, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "value_start": 9, "value_end": 73, "entropy": 4.68689 }, { "line": "#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "line_num": 25, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "value_start": 9, "value_end": 73, "entropy": 4.85337 }, { "line": "#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "line_num": 26, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "value_start": 9, "value_end": 73, "entropy": 4.79657 }, { "line": "#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "line_num": 27, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "value_start": 9, "value_end": 73, "entropy": 4.76945 }, { "line": "#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "line_num": 28, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "value_start": 9, "value_end": 73, "entropy": 4.70126 }, { "line": "#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "line_num": 29, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "value_start": 9, "value_end": 73, "entropy": 4.74525 }, { "line": "#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "line_num": 30, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "line_num": 31, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "value_start": 9, "value_end": 73, "entropy": 4.84924 }, { "line": "#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "line_num": 32, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "value_start": 9, "value_end": 73, "entropy": 4.78518 }, { "line": "#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "line_num": 33, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "value_start": 9, "value_end": 73, "entropy": 4.73346 }, { "line": "#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "line_num": 34, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "value_start": 9, "value_end": 73, "entropy": 4.69143 }, { "line": "#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "line_num": 35, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "line_num": 36, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "value_start": 9, "value_end": 73, "entropy": 4.94712 }, { "line": "#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "line_num": 37, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "value_start": 9, "value_end": 73, "entropy": 5.09727 }, { "line": "#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "line_num": 38, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "line_num": 39, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "line_num": 40, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "value_start": 9, "value_end": 73, "entropy": 5.46875 }, { "line": "#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "line_num": 41, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "line_num": 42, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "value_start": 9, "value_end": 73, "entropy": 5.17923 }, { "line": "#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "line_num": 43, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "line_num": 44, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "line_num": 45, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "line_num": 46, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "value_start": 9, "value_end": 73, "entropy": 5.10751 }, { "line": "#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "line_num": 47, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "line_num": 48, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "line_num": 49, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "line_num": 50, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "line_num": 51, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "line_num": 52, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "value_start": 9, "value_end": 73, "entropy": 5.32782 }, { "line": "#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "line_num": 53, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "line_num": 54, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "value_start": 9, "value_end": 73, "entropy": 5.07212 }, { "line": "#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "line_num": 55, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "line_num": 56, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "line_num": 57, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "value_start": 9, "value_end": 73, "entropy": 5.23407 }, { "line": "#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "line_num": 58, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "line_num": 59, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "value_start": 9, "value_end": 73, "entropy": 5.19516 }, { "line": "#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "line_num": 60, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "line_num": 61, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "value_start": 9, "value_end": 73, "entropy": 5.17157 }, { "line": "#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "line_num": 62, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "value_start": 9, "value_end": 73, "entropy": 5.24173 }, { "line": "#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "line_num": 63, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "line_num": 64, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "value_start": 9, "value_end": 73, "entropy": 5.15821 }, { "line": "#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "line_num": 65, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "value_start": 9, "value_end": 73, "entropy": 5.04657 }, { "line": "#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "line_num": 66, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "line_num": 67, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "value_start": 9, "value_end": 73, "entropy": 5.11673 }, { "line": "#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "line_num": 68, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "value_start": 9, "value_end": 73, "entropy": 4.92197 }, { "line": "#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "line_num": 69, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "value_start": 9, "value_end": 73, "entropy": 5.20282 }, { "line": "#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "line_num": 70, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "value_start": 9, "value_end": 73, "entropy": 5.30836 }, { "line": "#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "line_num": 71, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "line_num": 72, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "value_start": 9, "value_end": 73, "entropy": 5.19102 }, { "line": "#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "line_num": 73, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "line_num": 74, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "value_start": 9, "value_end": 73, "entropy": 5.08392 }, { "line": "#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "line_num": 75, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "line_num": 76, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "value_start": 9, "value_end": 73, "entropy": 5.33195 }, { "line": "#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "line_num": 77, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "value_start": 9, "value_end": 73, "entropy": 5.16743 }, { "line": "#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "line_num": 78, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "value_start": 9, "value_end": 73, "entropy": 5.26118 }, { "line": "#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "line_num": 79, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "value_start": 9, "value_end": 73, "entropy": 5.21048 }, { "line": "#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "line_num": 80, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "line_num": 81, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "line_num": 82, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "value_start": 9, "value_end": 73, "entropy": 4.99017 }, { "line": "#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "line_num": 83, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "value_start": 9, "value_end": 73, "entropy": 5.38266 }, { "line": "#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "line_num": 84, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "value_start": 9, "value_end": 73, "entropy": 5.28477 }, { "line": "#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "line_num": 85, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "line_num": 86, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "value_start": 9, "value_end": 73, "entropy": 5.10493 }, { "line": "#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "line_num": 87, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "line_num": 88, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "line_num": 89, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "line_num": 90, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "line_num": 91, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "value_start": 9, "value_end": 73, "entropy": 5.16391 }, { "line": "#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "line_num": 92, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "value_start": 9, "value_end": 73, "entropy": 5.31602 }, { "line": "#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "line_num": 93, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "line_num": 94, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "value_start": 9, "value_end": 73, "entropy": 4.96658 }, { "line": "#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "line_num": 95, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "line_num": 96, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "value_start": 9, "value_end": 73, "entropy": 5.10907 }, { "line": "#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "line_num": 97, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "line_num": 98, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "line_num": 99, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "value_start": 9, "value_end": 73, "entropy": 5.27711 }, { "line": "#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "line_num": 100, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "line_num": 101, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "value_start": 9, "value_end": 73, "entropy": 5.05423 }, { "line": "#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "line_num": 102, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "value_start": 9, "value_end": 73, "entropy": 4.90408 }, { "line": "#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "line_num": 103, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "line_num": 104, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "value_start": 9, "value_end": 73, "entropy": 5.13266 }, { "line": "#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "line_num": 105, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "value_start": 9, "value_end": 73, "entropy": 5.14798 }, { "line": "#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS", "line_num": 106, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aANEEoU1dXIzisq6pQ0J8AKS", "value_start": 9, "value_end": 33, "entropy": 4.4183 }, { "line": "#6 0.245 -----END PRIVATE KEY-----", "line_num": 107, "path": "./tests/samples/pem_key.p.docker.log", "info": "FILE:./tests/samples/pem_key.p.docker.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 9, "value_end": 34, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.docker.log.json", "info": "FILE:./tests/samples/pem_key.p.docker.log.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----", "value_start": 102, "value_end": 749, "entropy": 5.8742 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "line_num": 2, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "value_start": 0, "value_end": 64, "entropy": 4.72268 }, { "line": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "line_num": 3, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "value_start": 0, "value_end": 64, "entropy": 5.12852 }, { "line": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "line_num": 4, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "value_start": 0, "value_end": 56, "entropy": 5.24468 }, { "line": "-----END PRIVATE KEY-----", "line_num": 5, "path": "./tests/samples/pem_key.p.ec", "info": "FILE:./tests/samples/pem_key.p.ec|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 25, "value_end": 55, "entropy": 3.30775 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "line_num": 2, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "value_start": 0, "value_end": 64, "entropy": 4.64072 }, { "line": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "line_num": 3, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "value_start": 0, "value_end": 64, "entropy": 5.22641 }, { "line": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "line_num": 4, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "value_start": 0, "value_end": 56, "entropy": 5.11058 }, { "line": "-----END EC PRIVATE KEY-----`", "line_num": 5, "path": "./tests/samples/pem_key.p.go", "info": "FILE:./tests/samples/pem_key.p.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END EC PRIVATE KEY-----", "value_start": 0, "value_end": 28, "entropy": 3.16542 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "PRIVATE_KEY = \"-----BEGIN RSA PRIVATE KEY-----\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 19, "value_end": 50, "entropy": 3.38229 }, { "line": "+ \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n", "value_start": 10, "value_end": 74, "entropy": 4.53081 }, { "line": "+ \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp", "value_start": 11, "value_end": 75, "entropy": 5.25352 }, { "line": "+ \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP", "value_start": 13, "value_end": 77, "entropy": 5.09727 }, { "line": "+ \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI", "value_start": 11, "value_end": 75, "entropy": 5.10907 }, { "line": "+ \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5", "value_start": 9, "value_end": 73, "entropy": 5.0629 }, { "line": "+ \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR", "value_start": 10, "value_end": 74, "entropy": 5.10907 }, { "line": "+ \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\n\"", "line_num": 10, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0", "value_start": 11, "value_end": 75, "entropy": 5.15211 }, { "line": "+ \"GeGaqMojMT7//g==\\n\"", "line_num": 11, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GeGaqMojMT7//g==", "value_start": 10, "value_end": 26, "entropy": 3.5 }, { "line": "+ \"-----END RSA PRIVATE KEY-----\\n\";", "line_num": 12, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 9, "value_end": 38, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "= \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 16, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 6, "value_end": 33, "entropy": 3.20029 }, { "line": "+ \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 17, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": "+ \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 18, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": "+ \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 19, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": "+ \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 20, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": "+ \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 21, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": "+ \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 22, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": "+ \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 23, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": "+ \"aAjRMKT7uCM=\\\\n\"", "line_num": 24, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": "+ \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 25, "path": "./tests/samples/pem_key.p.java", "info": "FILE:./tests/samples/pem_key.p.java|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 20, "value_end": 47, "entropy": 3.20029 }, { "line": "2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "line_num": 3, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "value_start": 20, "value_end": 84, "entropy": 4.67767 }, { "line": "2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "line_num": 4, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "value_start": 20, "value_end": 84, "entropy": 5.06602 }, { "line": "2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "line_num": 5, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "line_num": 6, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "line_num": 7, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "value_start": 20, "value_end": 84, "entropy": 5.27298 }, { "line": "2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "line_num": 8, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "value_start": 20, "value_end": 84, "entropy": 5.4375 }, { "line": "2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "line_num": 9, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "line_num": 10, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "value_start": 20, "value_end": 84, "entropy": 5.2382 }, { "line": "2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "line_num": 11, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "value_start": 20, "value_end": 84, "entropy": 5.27711 }, { "line": "2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "line_num": 12, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "line_num": 13, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "value_start": 20, "value_end": 84, "entropy": 5.09571 }, { "line": "2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "line_num": 14, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "value_start": 20, "value_end": 84, "entropy": 5.34375 }, { "line": "2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "line_num": 15, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "value_start": 20, "value_end": 84, "entropy": 5.14384 }, { "line": "2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "line_num": 16, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "value_start": 20, "value_end": 84, "entropy": 5.22993 }, { "line": "2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "line_num": 17, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "line_num": 18, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "value_start": 20, "value_end": 84, "entropy": 4.86869 }, { "line": "2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "line_num": 19, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "value_start": 20, "value_end": 84, "entropy": 5.35907 }, { "line": "2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "line_num": 20, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "value_start": 20, "value_end": 84, "entropy": 5.24173 }, { "line": "2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "line_num": 21, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "value_start": 20, "value_end": 84, "entropy": 5.00352 }, { "line": "2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "line_num": 22, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "line_num": 23, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "line_num": 24, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "line_num": 25, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "value_start": 20, "value_end": 84, "entropy": 4.95282 }, { "line": "2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "line_num": 26, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "value_start": 20, "value_end": 84, "entropy": 5.05836 }, { "line": "2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "line_num": 27, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "line_num": 28, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "line_num": 29, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "value_start": 20, "value_end": 84, "entropy": 5.13462 }, { "line": "2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "line_num": 30, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "line_num": 31, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "line_num": 32, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "value_start": 20, "value_end": 84, "entropy": 5.04243 }, { "line": "2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "line_num": 33, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "line_num": 34, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "value_start": 20, "value_end": 84, "entropy": 4.84727 }, { "line": "2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "line_num": 35, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "line_num": 36, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "line_num": 37, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "value_start": 20, "value_end": 84, "entropy": 5.13618 }, { "line": "2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "line_num": 38, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "value_start": 20, "value_end": 84, "entropy": 5.04657 }, { "line": "2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "line_num": 39, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "value_start": 20, "value_end": 84, "entropy": 5.10141 }, { "line": "2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "line_num": 40, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "value_start": 20, "value_end": 84, "entropy": 5.11673 }, { "line": "2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "line_num": 41, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "line_num": 42, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "line_num": 43, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "value_start": 20, "value_end": 84, "entropy": 5.21461 }, { "line": "2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "line_num": 44, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "line_num": 45, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "value_start": 20, "value_end": 84, "entropy": 5.02752 }, { "line": "2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "line_num": 46, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "line_num": 47, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "value_start": 20, "value_end": 84, "entropy": 5.25 }, { "line": "2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "line_num": 48, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "value_start": 20, "value_end": 84, "entropy": 5.12852 }, { "line": "2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "line_num": 49, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "value_start": 20, "value_end": 84, "entropy": 5.12283 }, { "line": "2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "line_num": 50, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "value_start": 20, "value_end": 84, "entropy": 5.12696 }, { "line": "2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "line_num": 51, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "line_num": 52, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "line_num": 53, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "line_num": 54, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "value_start": 20, "value_end": 84, "entropy": 4.94712 }, { "line": "2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "line_num": 55, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "line_num": 56, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "line_num": 57, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "value_start": 20, "value_end": 84, "entropy": 4.98251 }, { "line": "2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "line_num": 58, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "value_start": 20, "value_end": 84, "entropy": 5.19102 }, { "line": "2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "line_num": 59, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "line_num": 60, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "value_start": 20, "value_end": 84, "entropy": 5.02711 }, { "line": "2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "line_num": 61, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "value_start": 20, "value_end": 84, "entropy": 5.15211 }, { "line": "2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "line_num": 62, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "value_start": 20, "value_end": 84, "entropy": 5.09727 }, { "line": "2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "line_num": 63, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "value_start": 20, "value_end": 84, "entropy": 5.25352 }, { "line": "2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "line_num": 64, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "line_num": 65, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "line_num": 66, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "line_num": 67, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "value_start": 20, "value_end": 84, "entropy": 5.03477 }, { "line": "2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "line_num": 68, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "value_start": 20, "value_end": 84, "entropy": 4.99173 }, { "line": "2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "line_num": 69, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "line_num": 70, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "value_start": 20, "value_end": 84, "entropy": 5.21048 }, { "line": "2026-04-26 12:36:01 qwI=", "line_num": 71, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qwI=", "value_start": 20, "value_end": 24, "entropy": 2.0 }, { "line": "2026-04-26 12:36:01 -----END PRIVATE KEY-----", "line_num": 72, "path": "./tests/samples/pem_key.p.log", "info": "FILE:./tests/samples/pem_key.p.log|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 20, "value_end": 45, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "FILE:./tests/samples/pem_key.p.log.json|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----", "value_start": 157, "value_end": 6245, "entropy": 5.8771 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "line_num": 2, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "value_start": 0, "value_end": 64, "entropy": 4.67611 }, { "line": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "line_num": 3, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "value_start": 0, "value_end": 64, "entropy": 5.10493 }, { "line": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "line_num": 4, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "value_start": 0, "value_end": 64, "entropy": 5.21461 }, { "line": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "line_num": 5, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "value_start": 0, "value_end": 64, "entropy": 4.97641 }, { "line": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "line_num": 6, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "value_start": 0, "value_end": 64, "entropy": 5.17923 }, { "line": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "line_num": 7, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "value_start": 0, "value_end": 64, "entropy": 5.25766 }, { "line": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "line_num": 8, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "value_start": 0, "value_end": 64, "entropy": 5.35141 }, { "line": "24n7nBfD3ZXv", "line_num": 9, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "24n7nBfD3ZXv", "value_start": 0, "value_end": 12, "entropy": 3.4183 }, { "line": "-----END PRIVATE KEY-----", "line_num": 10, "path": "./tests/samples/pem_key.p.rsa", "info": "FILE:./tests/samples/pem_key.p.rsa|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "Perplexity API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/perplexity", "info": "FILE:./tests/samples/perplexity|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 53, "entropy": 5.08142 } ] }, { "rule": "Picatic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "FILE:./tests/samples/picatic_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "FILE:./tests/samples/picatic_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "PKCS with password 'changeme'", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqG", "line_num": 0, "path": "./tests/samples/pkcs12.changeme.p12", "info": "FILE:./tests/samples/pkcs12.changeme.p12|PKCS_PASSWORD:b'changeme'", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b'changeme'", "value_start": -2, "value_end": -2, "entropy": 3.0958 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "line_num": 1, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "value_start": 0, "value_end": 44, "entropy": 4.86251 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "line_num": 2, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "value_start": 0, "value_end": 50, "entropy": 4.89366 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "line_num": 3, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "value_start": 0, "value_end": 53, "entropy": 5.07217 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "line_num": 4, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "value_start": 0, "value_end": 61, "entropy": 5.03312 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "line_num": 5, "path": "./tests/samples/posthog", "info": "FILE:./tests/samples/posthog|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "value_start": 0, "value_end": 64, "entropy": 5.04657 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "line_num": 1, "path": "./tests/samples/postman", "info": "FILE:./tests/samples/postman|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "value_start": 0, "value_end": 64, "entropy": 4.21698 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "line_num": 2, "path": "./tests/samples/postman", "info": "FILE:./tests/samples/postman|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "value_start": 0, "value_end": 31, "entropy": 4.3492 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81", "line_num": 10, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0572bc9-7a3e-beef-cafe-9129474bcd81", "value_start": 38, "value_end": 74, "entropy": 3.84286 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "line_num": 80, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "token", "variable_start": 33, "variable_end": 38, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 39, "value_end": 85, "entropy": 4.79509 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "line_num": 80, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "token", "variable_start": 33, "variable_end": 38, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 39, "value_end": 85, "entropy": 4.79509 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.982, "line_data_list": [ { "line": "147# password: Jd3OnNy^564eD5_sd", "line_num": 147, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "password", "variable_start": 5, "variable_end": 13, "value": "Jd3OnNy^564eD5_sd", "value_start": 15, "value_end": 32, "entropy": 3.85217 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.982, "line_data_list": [ { "line": "147# password: Jd3OnNy^564eD5_sd", "line_num": 147, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": "password", "variable_start": 5, "variable_end": 13, "value": "Jd3OnNy^564eD5_sd", "value_start": 15, "value_end": 32, "entropy": 3.85217 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "151# a0ce4d19-7a3e-beef-cafe-9129474bcd81", "line_num": 151, "path": "./tests/samples/pretty.html", "info": "FILE:./tests/samples/pretty.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0ce4d19-7a3e-beef-cafe-9129474bcd81", "value_start": 5, "value_end": 41, "entropy": 3.74259 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.118, "line_data_list": [ { "line": "pwd = \"cackle!\"", "line_num": 1, "path": "./tests/samples/pwd.gradle", "info": "FILE:./tests/samples/pwd.gradle|RAW", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "cackle!", "value_start": 7, "value_end": 14, "entropy": 2.52164 } ] }, { "rule": "PyPi API Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "line_num": 1, "path": "./tests/samples/pypi_token", "info": "FILE:./tests/samples/pypi_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "value_start": 0, "value_end": 179, "entropy": 5.5923 } ] }, { "rule": "RubyGems API Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "line_num": 1, "path": "./tests/samples/rubygems", "info": "FILE:./tests/samples/rubygems|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "value_start": 0, "value_end": 57, "entropy": 4.06282 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DFT5H59PHLAN0IA", "value_start": 9, "value_end": 26, "entropy": 3.45482 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DG9UE38D6ELk5l", "value_start": 27, "value_end": 43, "entropy": 3.625 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00Dh68fkeHGbDk92k", "value_start": 61, "value_end": 78, "entropy": 3.57247 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DyXD47kKDny11j", "value_start": 44, "value_end": 60, "entropy": 3.32782 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "line_num": 3, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "value_start": 8, "value_end": 120, "entropy": 5.19811 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "line_num": 4, "path": "./tests/samples/salesfoce", "info": "FILE:./tests/samples/salesfoce|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "value_start": 13, "value_end": 98, "entropy": 5.45622 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "First line bace4d11-a001-be1a-c3fe-9829474b5d84", "line_num": 1, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-a001-be1a-c3fe-9829474b5d84", "value_start": 11, "value_end": 47, "entropy": 3.82924 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "second line bace4d11-a002-be1a-c3fe-9829474b5d84", "line_num": 2, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-a002-be1a-c3fe-9829474b5d84", "value_start": 12, "value_end": 48, "entropy": 3.86383 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84", "line_num": 3, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-b003-be1a-c3fe-9829474b5d84", "value_start": 12, "value_end": 48, "entropy": 3.85021 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "New page first line bace4d19-b001-b3e2-eac1-9129474bcd84", "line_num": 4, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-b001-b3e2-eac1-9129474bcd84", "value_start": 20, "value_end": 56, "entropy": 3.66257 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Next page section bace4d19-c001-b3e2-eac1-9129474bcd84", "line_num": 5, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-c001-b3e2-eac1-9129474bcd84", "value_start": 18, "value_end": 54, "entropy": 3.66257 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881", "line_num": 6, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b5c6471d-a2b2-b4ef-ca5e-9121476bc881", "value_start": 13, "value_end": 49, "entropy": 3.77368 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "next line in section bace4d19-c001-b3e2-eac1-9129474bcd84", "line_num": 7, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-c001-b3e2-eac1-9129474bcd84", "value_start": 21, "value_end": 57, "entropy": 3.66257 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "last page bace4d11-a003-be2a-c3fe-9829474b5d84", "line_num": 8, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-a003-be2a-c3fe-9829474b5d84", "value_start": 11, "value_end": 47, "entropy": 3.8848 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2 Second page header bace4d19-b002-beda-cafe-0929375bcd82", "line_num": 9, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-b002-beda-cafe-0929375bcd82", "value_start": 21, "value_end": 57, "entropy": 3.80092 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Third page header bace4d19-b003-beda-cafe-0929375bcd82", "line_num": 10, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-b003-beda-cafe-0929375bcd82", "value_start": 18, "value_end": 54, "entropy": 3.82189 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "first_page_header bace4d11-f001-beea-c3fe-9829474b5d84", "line_num": 11, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d11-f001-beea-c3fe-9829474b5d84", "value_start": 18, "value_end": 54, "entropy": 3.85021 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Default footer bace4119-f002-bdef-dafe-9129474bcd89", "line_num": 12, "path": "./tests/samples/sample.docx", "info": "FILE:./tests/samples/sample.docx|DOCX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4119-f002-bdef-dafe-9129474bcd89", "value_start": 15, "value_end": 51, "entropy": 3.71078 } ] }, { "rule": "DOC_GET", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password\uc124\uc815\uc740getenv(\"CREDENTIAL\", \"De7a01tC4e9En7\")", "line_num": 16, "path": "./tests/samples/sample.html", "info": "FILE:./tests/samples/sample.html|HTML", "variable": "password\uc124\uc815\uc740", "variable_start": 0, "variable_end": 11, "value": "De7a01tC4e9En7", "value_start": 33, "value_end": 47, "entropy": 3.52164 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "password\uc124\uc815\uc740getenv(\"CREDENTIAL\", \"De7a01tC4e9En7\")", "line_num": 16, "path": "./tests/samples/sample.html", "info": "FILE:./tests/samples/sample.html|HTML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "getenv(\"CREDENTIAL\",", "value_start": 11, "value_end": 31, "entropy": 4.02193 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.523, "line_data_list": [ { "line": "F16 224.52.124.93 root/A0dM1Nka", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:F16", "variable": null, "variable_start": -1, "variable_end": -1, "value": "A0dM1Nka", "value_start": 23, "value_end": 31, "entropy": 3.0 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AKIAGIREOGIAXLSX4BT5", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|Sheet1x1:A1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAXLSX4BT5", "value_start": 0, "value_end": 20, "entropy": 3.64644 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.98, "line_data_list": [ { "line": "\ud64d\uae38\ub3d9\uc804\t192.168.0.1\tadmin\tH0NgGi1d0nG", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|Sheet4x3:R2", "variable": null, "variable_start": -1, "variable_end": -1, "value": "H0NgGi1d0nG", "value_start": 24, "value_end": 35, "entropy": 3.0958 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.985, "line_data_list": [ { "line": "B3 192.168.0.1 master/NBd@126t!", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:B3", "variable": null, "variable_start": -1, "variable_end": -1, "value": "NBd@126t!", "value_start": 22, "value_end": 31, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 }, { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:A2", "variable": "ID", "variable_start": 3, "variable_end": 5, "value": "master,PW:dipPr10Gg!", "value_start": 6, "value_end": 26, "entropy": 4.12193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "A1 password is w3Ry5tR0nG", "line_num": 1, "path": "./tests/samples/sample.ods", "info": "FILE:./tests/samples/sample.ods|SheetAny:A1", "variable": "password", "variable_start": 3, "variable_end": 11, "value": "w3Ry5tR0nG", "value_start": 15, "value_end": 25, "entropy": 3.12193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = \u201cXdj@jcN834b\u201d", "line_num": 1, "path": "./tests/samples/sample.pdf", "info": "FILE:./tests/samples/sample.pdf|PDF:1", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Xdj@jcN834b", "value_start": 12, "value_end": 23, "entropy": 3.27761 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.967, "line_data_list": [ { "line": "token = \u2018bace4d31-fa7e-beef-cafe-912947cbe28\u2019", "line_num": 1, "path": "./tests/samples/sample.pdf", "info": "FILE:./tests/samples/sample.pdf|PDF:1", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "bace4d31-fa7e-beef-cafe-912947cbe28", "value_start": 9, "value_end": 44, "entropy": 3.62845 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/sample.pdf", "info": "FILE:./tests/samples/sample.pdf|PDF:1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 40, "entropy": 4.97193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AKIAGIREOGIPPTX1Y45X", "line_num": 2, "path": "./tests/samples/sample.pptx", "info": "FILE:./tests/samples/sample.pptx|PPTX:1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIPPTX1Y45X", "value_start": 0, "value_end": 20, "entropy": 3.68418 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.004, "line_data_list": [ { "line": "1: \ube44\ubc00\ubc88\ud638:pRl5Db#@", "line_num": 1, "path": "./tests/samples/sample.rtf", "info": "FILE:./tests/samples/sample.rtf|RTF", "variable": "\ube44\ubc00\ubc88\ud638", "variable_start": 3, "variable_end": 7, "value": "pRl5Db#@", "value_start": 8, "value_end": 16, "entropy": 3.0 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.004, "line_data_list": [ { "line": "1: \ube44\ubc00\ubc88\ud638:pRl5Db#@", "line_num": 1, "path": "./tests/samples/sample.rtf", "info": "FILE:./tests/samples/sample.rtf|RTF", "variable": "\ube44\ubc00\ubc88\ud638", "variable_start": 3, "variable_end": 7, "value": "pRl5Db#@", "value_start": 8, "value_end": 16, "entropy": 3.0 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'", "line_num": 3, "path": "./tests/samples/sample.rtf", "info": "FILE:./tests/samples/sample.rtf|RTF", "variable": null, "variable_start": -2, "variable_end": -2, "value": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36", "value_start": 22, "value_end": 58, "entropy": 3.84286 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'", "line_num": 3, "path": "./tests/samples/sample.rtf", "info": "FILE:./tests/samples/sample.rtf|RTF", "variable": "token", "variable_start": 15, "variable_end": 20, "value": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'", "value_start": 22, "value_end": 59, "entropy": 3.91825 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "17205d79-dead-beef-a311-26312ad6ea36", "line_num": 1, "path": "./tests/samples/sample.tm7", "info": "FILE:./tests/samples/sample.tm7|TMX", "variable": null, "variable_start": -2, "variable_end": -2, "value": "17205d79-dead-beef-a311-26312ad6ea36", "value_start": 0, "value_end": 36, "entropy": 3.60702 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "May password:6Ew1ThY0u", "line_num": 2, "path": "./tests/samples/sample.tm7", "info": "FILE:./tests/samples/sample.tm7|TMX", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "6Ew1ThY0u", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "May password:6Ew1ThY0u", "line_num": 2, "path": "./tests/samples/sample.tm7", "info": "FILE:./tests/samples/sample.tm7|TMX", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "6Ew1ThY0u", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.523, "line_data_list": [ { "line": "F16 224.52.124.93 root/A0dM1Nka", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:F16", "variable": null, "variable_start": -1, "variable_end": -1, "value": "A0dM1Nka", "value_start": 23, "value_end": 31, "entropy": 3.0 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AKIAGIREOGIAXLSX4BT5", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|Sheet1x1:A1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAXLSX4BT5", "value_start": 0, "value_end": 20, "entropy": 3.64644 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.98, "line_data_list": [ { "line": "\ud64d\uae38\ub3d9\uc804\t192.168.0.1\tadmin\tH0NgGi1d0nG", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|Sheet4x3:R2", "variable": null, "variable_start": -1, "variable_end": -1, "value": "H0NgGi1d0nG", "value_start": 24, "value_end": 35, "entropy": 3.0958 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.985, "line_data_list": [ { "line": "B3 192.168.0.1 master/NBd@126t!", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:B3", "variable": null, "variable_start": -1, "variable_end": -1, "value": "NBd@126t!", "value_start": 22, "value_end": 31, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 }, { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:A2", "variable": "ID", "variable_start": 3, "variable_end": 5, "value": "master,PW:dipPr10Gg!", "value_start": 6, "value_end": 26, "entropy": 4.12193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "A1 password is w3Ry5tR0nG", "line_num": 1, "path": "./tests/samples/sample.xls", "info": "FILE:./tests/samples/sample.xls|SheetAny:A1", "variable": "password", "variable_start": 3, "variable_end": 11, "value": "w3Ry5tR0nG", "value_start": 15, "value_end": 25, "entropy": 3.12193 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.523, "line_data_list": [ { "line": "F16 224.52.124.93 root/A0dM1Nka", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|SheetAny:F16", "variable": null, "variable_start": -1, "variable_end": -1, "value": "A0dM1Nka", "value_start": 23, "value_end": 31, "entropy": 3.0 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AKIAGIREOGIAXLSX4BT5", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|Sheet1x1:A1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAXLSX4BT5", "value_start": 0, "value_end": 20, "entropy": 3.64644 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.98, "line_data_list": [ { "line": "\ud64d\uae38\ub3d9\uc804\t192.168.0.1\tadmin\tH0NgGi1d0nG", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|Sheet4x3:R2", "variable": null, "variable_start": -1, "variable_end": -1, "value": "H0NgGi1d0nG", "value_start": 24, "value_end": 35, "entropy": 3.0958 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.985, "line_data_list": [ { "line": "B3 192.168.0.1 master/NBd@126t!", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|SheetAny:B3", "variable": null, "variable_start": -1, "variable_end": -1, "value": "NBd@126t!", "value_start": 22, "value_end": 31, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 }, { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|SheetAny:A2", "variable": "ID", "variable_start": 3, "variable_end": 5, "value": "master,PW:dipPr10Gg!", "value_start": 6, "value_end": 26, "entropy": 4.12193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "A1 password is w3Ry5tR0nG", "line_num": 1, "path": "./tests/samples/sample.xlsb", "info": "FILE:./tests/samples/sample.xlsb|SheetAny:A1", "variable": "password", "variable_start": 3, "variable_end": 11, "value": "w3Ry5tR0nG", "value_start": 15, "value_end": 25, "entropy": 3.12193 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.523, "line_data_list": [ { "line": "F16 224.52.124.93 root/A0dM1Nka", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|SheetAny:F16", "variable": null, "variable_start": -1, "variable_end": -1, "value": "A0dM1Nka", "value_start": 23, "value_end": 31, "entropy": 3.0 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AKIAGIREOGIAXLSX4BT5", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|Sheet1x1:A1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAXLSX4BT5", "value_start": 0, "value_end": 20, "entropy": 3.64644 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.98, "line_data_list": [ { "line": "\ud64d\uae38\ub3d9\uc804\t192.168.0.1\tadmin\tH0NgGi1d0nG", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|Sheet4x3:R2", "variable": null, "variable_start": -1, "variable_end": -1, "value": "H0NgGi1d0nG", "value_start": 24, "value_end": 35, "entropy": 3.0958 } ] }, { "rule": "IP_ID_PASSWORD_TRIPLE", "severity": "medium", "confidence": "moderate", "ml_probability": 0.985, "line_data_list": [ { "line": "B3 192.168.0.1 master/NBd@126t!", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|SheetAny:B3", "variable": null, "variable_start": -1, "variable_end": -1, "value": "NBd@126t!", "value_start": 22, "value_end": 31, "entropy": 3.16993 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 }, { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|SheetAny:A2", "variable": "ID", "variable_start": 3, "variable_end": 5, "value": "master,PW:dipPr10Gg!", "value_start": 6, "value_end": 26, "entropy": 4.12193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.835, "line_data_list": [ { "line": "A2 ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|SheetAny:A2", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr10Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "A1 password is w3Ry5tR0nG", "line_num": 1, "path": "./tests/samples/sample.xlsx", "info": "FILE:./tests/samples/sample.xlsx|SheetAny:A1", "variable": "password", "variable_start": 3, "variable_end": 11, "value": "w3Ry5tR0nG", "value_start": 15, "value_end": 25, "entropy": 3.12193 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.003, "line_data_list": [ { "line": "Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201},", "line_num": 3, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "Secret", "variable_start": 8, "variable_end": 14, "value": "[]byte{333,", "value_start": 16, "value_end": 27, "entropy": 3.02717 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 14, "value_end": 49, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 8, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 9, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 10, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 11, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 12, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", "line_num": 17, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path_1", "variable_start": 4, "variable_end": 34, "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", "line_num": 18, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path_2", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", "value_start": 36, "value_end": 76, "entropy": 4.78418 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", "line_num": 19, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path_3", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", "line_num": 20, "path": "./tests/samples/secret.go", "info": "FILE:./tests/samples/secret.go|RAW", "variable": "secret_looks_like_linux_path__", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", "value_start": 36, "value_end": 76, "entropy": 4.85306 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "LEGACY_GITHUB_SECRET = \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\"", "line_num": 1, "path": "./tests/samples/secret.groovy", "info": "FILE:./tests/samples/secret.groovy|RAW", "variable": "LEGACY_GITHUB_SECRET", "variable_start": 0, "variable_end": 20, "value": "fa87409ad3a4589fd279c501b3d2e174855ee9f4", "value_start": 24, "value_end": 64, "entropy": 3.80869 } ] }, { "rule": "SendGrid API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SG.gireogigireogigi.gireogigireogigi", "line_num": 1, "path": "./tests/samples/sendgrid_api_key", "info": "FILE:./tests/samples/sendgrid_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SG.gireogigireogigi.gireogigireogigi", "value_start": 0, "value_end": 36, "entropy": 2.60219 } ] }, { "rule": "Sentry Organization Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "line_num": 1, "path": "./tests/samples/sentry", "info": "FILE:./tests/samples/sentry|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "value_start": 0, "value_end": 179, "entropy": 5.53873 } ] }, { "rule": "Sentry User Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/sentry", "info": "FILE:./tests/samples/sentry|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 71, "entropy": 4.14384 } ] }, { "rule": "Shopify Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"shopyfy_k\": \"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\",", "line_num": 1, "path": "./tests/samples/shopify_token", "info": "FILE:./tests/samples/shopify_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 18, "value_end": 56, "entropy": 3.80396 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "line_num": 1, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "value_start": 0, "value_end": 97, "entropy": 4.32216 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "line_num": 2, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "value_start": 0, "value_end": 56, "entropy": 4.71996 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "line_num": 3, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "value_start": 0, "value_end": 171, "entropy": 4.93756 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "line_num": 4, "path": "./tests/samples/slack_token.hs", "info": "FILE:./tests/samples/slack_token.hs|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "value_start": 0, "value_end": 153, "entropy": 4.95538 } ] }, { "rule": "Slack Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"hook\": \"https://hooks.slack.com/services/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\",", "line_num": 1, "path": "./tests/samples/slack_webhook.template", "info": "FILE:./tests/samples/slack_webhook.template|RAW", "variable": "hooks.slack.com/services", "variable_start": 21, "variable_end": 45, "value": "/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg", "value_start": 45, "value_end": 93, "entropy": 4.76184 } ] }, { "rule": "Azure Secret Value", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "line_num": 1, "path": "./tests/samples/small.pdf", "info": "FILE:./tests/samples/small.pdf|PDF:1", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "value_start": 0, "value_end": 40, "entropy": 4.75306 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',", "line_num": 1, "path": "./tests/samples/sonarqube", "info": "FILE:./tests/samples/sonarqube|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab", "value_start": 16, "value_end": 60, "entropy": 4.10151 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "line_num": 2, "path": "./tests/samples/sonarqube", "info": "FILE:./tests/samples/sonarqube|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "value_start": 14, "value_end": 58, "entropy": 3.954 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.918, "line_data_list": [ { "line": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';", "line_num": 1, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY", "variable_start": 0, "variable_end": 70, "value": "SqLpa5sW0rD", "value_start": 72, "value_end": 83, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.917, "line_data_list": [ { "line": "'create user name identified by 'SqLpa5sW0rD' --", "line_num": 2, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "create user name identified by", "variable_start": 1, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 3, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`", "line_num": 4, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER 'haproxy'@'%' IDENTIFIED BY", "variable_start": 2, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 5, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.041, "line_data_list": [ { "line": "expected_statement = \"\"\"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 6, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 24, "variable_end": 63, "value": "SqLpa5sW0rD", "value_start": 65, "value_end": 76, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.914, "line_data_list": [ { "line": "CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 8, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 0, "variable_end": 39, "value": "SqLpa5sW0rD", "value_start": 41, "value_end": 52, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 26, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 26, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 }, { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "LOGIN", "variable_start": 6, "variable_end": 11, "value": "username", "value_start": 12, "value_end": 20, "entropy": 2.75 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 26, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 36, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.992, "line_data_list": [ { "line": "ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\"", "line_num": 10, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER ROLE postgres PASSWORD", "variable_start": 0, "variable_end": 28, "value": "SqLpa5sW0rD", "value_start": 30, "value_end": 41, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 11, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER username WITH PASSWORD", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 27, "variable_end": 35, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "ID_PAIR_PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 27, "variable_end": 35, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 }, { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "LOGIN", "variable_start": 7, "variable_end": 12, "value": "username", "value_start": 13, "value_end": 21, "entropy": 2.75 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "PASSWORD", "variable_start": 27, "variable_end": 35, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 37, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;", "line_num": 13, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER chuck WITH PASSWORD", "variable_start": 0, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;", "line_num": 14, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD", "variable_start": 0, "variable_end": 45, "value": "SqLpa5sW0rD", "value_start": 47, "value_end": 58, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 15, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER myuser WITH PASSWORD", "variable_start": 0, "variable_end": 32, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 16, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER username WITH PASSWORD", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 36, "value_end": 47, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 17, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 47, "value": "SqLpa5sW0rD", "value_start": 49, "value_end": 60, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.553, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.10.10.%' identified by 'SqLpa5sW0rD';", "line_num": 18, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'super_user'@'10.10.10.%' identified by", "variable_start": 0, "variable_end": 50, "value": "SqLpa5sW0rD", "value_start": 52, "value_end": 63, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.899, "line_data_list": [ { "line": "ALTER USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 19, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.991, "line_data_list": [ { "line": "CREATE USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 20, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.997, "line_data_list": [ { "line": "CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 21, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 48, "value": "SqLpa5sW0rD", "value_start": 50, "value_end": 61, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "mysql -u root -pdbadmin -e \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\"\u2013", "line_num": 22, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY", "variable_start": 28, "variable_end": 77, "value": "SqLpa5sW0rD", "value_start": 79, "value_end": 90, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "-c \"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\"", "line_num": 23, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE ROLE scram_test login password", "variable_start": 4, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.995, "line_data_list": [ { "line": "CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;", "line_num": 24, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE ROLE app_admin WITH LOGIN PASSWORD", "variable_start": 0, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 42, "value_end": 53, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';", "line_num": 25, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE ROLE flask_admin_geo LOGIN PASSWORD", "variable_start": 0, "variable_end": 42, "value": "SqLpa5sW0rD", "value_start": 44, "value_end": 55, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.702, "line_data_list": [ { "line": "create role forum_example_graph_demo login password 'SqLpa5sW0rD';", "line_num": 26, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "create role forum_example_graph_demo login password", "variable_start": 0, "variable_end": 51, "value": "SqLpa5sW0rD", "value_start": 53, "value_end": 64, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.722, "line_data_list": [ { "line": "create role forum_example_graph login password 'SqLpa5sW0rD';", "line_num": 27, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "create role forum_example_graph login password", "variable_start": 0, "variable_end": 46, "value": "SqLpa5sW0rD", "value_start": 48, "value_end": 59, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.12, "line_data_list": [ { "line": "SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');", "line_num": 28, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "SET PASSWORD FOR 'username'@'localhost' = PASSWORD", "variable_start": 0, "variable_end": 50, "value": "SqLpa5sW0rD", "value_start": 52, "value_end": 63, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.549, "line_data_list": [ { "line": "insert into mysql.user values(PASSWORD('SqLpa5sW0rD') );", "line_num": 29, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "insert into mysql.user values(PASSWORD", "variable_start": 0, "variable_end": 38, "value": "SqLpa5sW0rD", "value_start": 40, "value_end": 51, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.12, "line_data_list": [ { "line": "UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';", "line_num": 30, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "UPDATE mysql.user SET authentication_string = PASSWORD", "variable_start": 0, "variable_end": 54, "value": "SqLpa5sW0rD", "value_start": 57, "value_end": 68, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE", "line_num": 31, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS", "variable_start": 0, "variable_end": 70, "value": "*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409", "value_start": 72, "value_end": 113, "entropy": 3.78769 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.849, "line_data_list": [ { "line": "sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\; >>tmp.sql;'", "line_num": 32, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "CREATE USER typeorm_mg IDENTIFIED BY", "variable_start": 12, "variable_end": 48, "value": "SqLpa5sW0rD\\;", "value_start": 49, "value_end": 62, "entropy": 3.70044 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.10.%' PASSWORD EXPIRE INTERVAL 90 DAY;", "line_num": 34, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'super_user'@'10.10.%' PASSWORD", "variable_start": 0, "variable_end": 42, "value": "EXPIRE", "value_start": 43, "value_end": 49, "entropy": 2.25163 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.1.%' PASSWORD HISTORY 1;", "line_num": 35, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'super_user'@'10.1.%' PASSWORD", "variable_start": 0, "variable_end": 41, "value": "HISTORY", "value_start": 42, "value_end": 49, "entropy": 2.80735 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;", "line_num": 36, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "ALTER USER 'username'@'%' PASSWORD", "variable_start": 0, "variable_end": 34, "value": "EXPIRE", "value_start": 35, "value_end": 41, "entropy": 2.25163 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "alter user \"bob\"@\"localhost\" identified with sha256_password by '';", "line_num": 38, "path": "./tests/samples/sql_password", "info": "FILE:./tests/samples/sql_password|RAW", "variable": "alter user \"bob\"@\"localhost\" identified with sha256_password by", "variable_start": 0, "variable_end": 63, "value": "", "value_start": 65, "value_end": 81, "entropy": 3.625 } ] }, { "rule": "Square Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"SQT\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",", "line_num": 1, "path": "./tests/samples/square_access_token", "info": "FILE:./tests/samples/square_access_token|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF", "value_start": 12, "value_end": 76, "entropy": 4.66018 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sq0atp-GIREOGICR0CKLE12W45A78", "line_num": 1, "path": "./tests/samples/square_client_id", "info": "FILE:./tests/samples/square_client_id|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0atp-GIREOGICR0CKLE12W45A78", "value_start": 0, "value_end": 29, "entropy": 4.44419 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "20241204_112356 Colored line: \"\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\u001b[0m\";", "line_num": 1, "path": "./tests/samples/square_oauth_secret", "info": "FILE:./tests/samples/square_oauth_secret|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI", "value_start": 36, "value_end": 86, "entropy": 4.75856 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "line_num": 3, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "line_num": 4, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "line_num": 5, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "value_start": 0, "value_end": 32, "entropy": 4.53891 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "line_num": 6, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "value_start": 0, "value_end": 107, "entropy": 5.24966 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "line_num": 7, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "value_start": 0, "value_end": 107, "entropy": 5.44092 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 8, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 107, "entropy": 5.50064 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "line_num": 9, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "value_start": 0, "value_end": 38, "entropy": 4.47135 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "line_num": 10, "path": "./tests/samples/stripe_credentials", "info": "FILE:./tests/samples/stripe_credentials|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "value_start": 0, "value_end": 38, "entropy": 4.82687 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "\"key\": \"password\",", "line_num": 3, "path": "./tests/samples/struct.json", "info": "FILE:./tests/samples/struct.json|RAW", "variable": "key", "variable_start": 5, "variable_end": 8, "value": "password", "value_start": 12, "value_end": 20, "entropy": 2.75 } ] }, { "rule": "Telegram Bot API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "line_num": 1, "path": "./tests/samples/telegram_api_key", "info": "FILE:./tests/samples/telegram_api_key|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "value_start": 0, "value_end": 45, "entropy": 4.94174 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.012, "line_data_list": [ { "line": "PW: H1ddEn#ema1l", "line_num": 6, "path": "./tests/samples/test.eml", "info": "FILE:./tests/samples/test.eml|EML-HTML", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "H1ddEn#ema1l", "value_start": 4, "value_end": 16, "entropy": 3.25163 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.012, "line_data_list": [ { "line": "PW: H1ddEn#ema1l", "line_num": 6, "path": "./tests/samples/test.eml", "info": "FILE:./tests/samples/test.eml|EML-HTML", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "H1ddEn#ema1l", "value_start": 4, "value_end": 16, "entropy": 3.25163 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.832, "line_data_list": [ { "line": "td : Password: MU$T6Ef09#D!", "line_num": 1, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|XML", "variable": "Password", "variable_start": 5, "variable_end": 13, "value": "MU$T6Ef09#D!", "value_start": 26, "value_end": 38, "entropy": 3.58496 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.832, "line_data_list": [ { "line": "td : Password: MU$T6Ef09#D!", "line_num": 1, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|XML", "variable": "Password", "variable_start": 5, "variable_end": 13, "value": "MU$T6Ef09#D!", "value_start": 26, "value_end": 38, "entropy": 3.58496 } ] }, { "rule": "Telegram Bot API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "line_num": 76, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "value_start": 0, "value_end": 45, "entropy": 4.94174 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "# 94 ya29.dshMb48ehfXwydAj34D32J", "line_num": 83, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.dshMb48ehfXwydAj34D32J", "value_start": 5, "value_end": 32, "entropy": 4.31044 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 84, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 5, "value_end": 76, "entropy": 3.6568 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "line_num": 89, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 35, "value_end": 122, "entropy": 4.93612 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.994, "line_data_list": [ { "line": "ALTER\tUSER\tdetector\tIDENTIFIED\tBY\tSqLpa5sW0rD4;", "line_num": 110, "path": "./tests/samples/test.html", "info": "FILE:./tests/samples/test.html|HTML", "variable": "ALTER\tUSER\tdetector\tIDENTIFIED\tBY", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD4", "value_start": 34, "value_end": 46, "entropy": 3.58496 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 8, "path": "./tests/samples/test2.eml", "info": "FILE:./tests/samples/test2.eml|EML-TEXT", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "line_num": 1, "path": "./tests/samples/together", "info": "FILE:./tests/samples/together|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "value_start": 0, "value_end": 50, "entropy": 5.13366 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "line_num": 2, "path": "./tests/samples/together", "info": "FILE:./tests/samples/together|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "value_start": 0, "value_end": 50, "entropy": 5.16386 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_token = \"G1Re06G1BdgNseiJDN21Z094M\"", "line_num": 1, "path": "./tests/samples/token.toml", "info": "FILE:./tests/samples/token.toml|RAW", "variable": "gi_reo_gi_token", "variable_start": 0, "variable_end": 15, "value": "G1Re06G1BdgNseiJDN21Z094M", "value_start": 19, "value_end": 44, "entropy": 4.13366 } ] }, { "rule": "SECRET_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_token = \"G1Re06G1BdgNseiJDN21Z094M\"", "line_num": 1, "path": "./tests/samples/token.toml", "info": "FILE:./tests/samples/token.toml|RAW", "variable": "token", "variable_start": 10, "variable_end": 15, "value": "G1Re06G1BdgNseiJDN21Z094M", "value_start": 19, "value_end": 44, "entropy": 4.13366 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo", "line_num": 2, "path": "./tests/samples/token.toml", "info": "FILE:./tests/samples/token.toml|RAW", "variable": "DemoToken", "variable_start": 8, "variable_end": 17, "value": "Nxs094M3ed2s1Re0F4M3ed2GZ8M=", "value_start": 19, "value_end": 47, "entropy": 4.03915 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "tp_token_value=\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\"", "line_num": 4, "path": "./tests/samples/token.toml", "info": "FILE:./tests/samples/token.toml|RAW", "variable": "tp_token_value", "variable_start": 0, "variable_end": 14, "value": "b035d48j9X2dfjF0hb9sd8Guf5hWu2ia", "value_start": 16, "value_end": 48, "entropy": 4.22641 } ] }, { "rule": "Tavily API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # TP", "line_num": 1, "path": "./tests/samples/tvly", "info": "FILE:./tests/samples/tvly|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.84432 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SK4D2F64E2A108CD72F648B1984C3B5A13", "line_num": 1, "path": "./tests/samples/twilio_credentials_p", "info": "FILE:./tests/samples/twilio_credentials_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SK4D2F64E2A108CD72F648B1984C3B5A13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AC4d2f64e2a108cd72f648b1984c3b5a13", "line_num": 2, "path": "./tests/samples/twilio_credentials_p", "info": "FILE:./tests/samples/twilio_credentials_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AC4d2f64e2a108cd72f648b1984c3b5a13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');", "line_num": 1, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "dbconnection://", "variable_start": 32, "variable_end": 47, "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, "entropy": 3.58496 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", "line_num": 3, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "Credential", "variable_start": 38, "variable_end": 48, "value": "546DFS64N90P3AW7DX%2Fkeep%26cut\"", "value_start": 49, "value_end": 81, "entropy": 4.47641 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.033, "line_data_list": [ { "line": "// \"fp://no.host.real/any/path/to/nowhere/\",\"key\":\"f45VgF8jX79o@anydata.com\"", "line_num": 7, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "key", "variable_start": 45, "variable_end": 48, "value": "f45VgF8jX79o@anydata.com", "value_start": 51, "value_end": 75, "entropy": 4.30351 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "key", "variable_start": 36, "variable_end": 39, "value": "3487263-2384579834-234732875-345", "value_start": 40, "value_end": 72, "entropy": 2.97591 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "Credential", "variable_start": 6, "variable_end": 16, "value": "546DFS64N90P3AW7DX", "value_start": 17, "value_end": 35, "entropy": 3.83659 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", "line_num": 13, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "smtps://", "variable_start": 18, "variable_end": 26, "value": "FnD83JZs", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url3d = \"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\";", "line_num": 19, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "26token", "variable_start": 63, "variable_end": 70, "value": "h1d3Me4ch534d801sl3jdk", "value_start": 73, "value_end": 95, "entropy": 3.75444 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "if (password !== \"PaS5w0rD2#\"){", "line_num": 21, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "PaS5w0rD2#", "value_start": 18, "value_end": 28, "entropy": 3.32193 } ] }, { "rule": "PASSWD_PAIR", "severity": "medium", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "if (password !== \"PaS5w0rD2#\"){", "line_num": 21, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "PaS5w0rD2#", "value_start": 18, "value_end": 28, "entropy": 3.32193 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "{\"line\": \"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\"}", "line_num": 25, "path": "./tests/samples/url_cred.js", "info": "FILE:./tests/samples/url_cred.js|RAW", "variable": "mongodb://", "variable_start": 15, "variable_end": 25, "value": "p4Dsr8b", "value_start": 34, "value_end": 41, "entropy": 2.80735 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", "line_num": 1, "path": "./tests/samples/uuid", "info": "FILE:./tests/samples/uuid|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.58954 } ] }, { "rule": "Vercel Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "line_num": 1, "path": "./tests/samples/vercel", "info": "FILE:./tests/samples/vercel|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "value_start": 0, "value_end": 60, "entropy": 5.23581 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wxe191bc54fc7d529a", "line_num": 1, "path": "./tests/samples/wechat_p", "info": "FILE:./tests/samples/wechat_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wxe191bc54fc7d529a", "value_start": 0, "value_end": 18, "entropy": 3.72548 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx2274a335e18222d6", "line_num": 2, "path": "./tests/samples/wechat_p", "info": "FILE:./tests/samples/wechat_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx2274a335e18222d6", "value_start": 0, "value_end": 18, "entropy": 3.41383 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx4d82d07e3eb5ba84", "line_num": 3, "path": "./tests/samples/wechat_p", "info": "FILE:./tests/samples/wechat_p|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx4d82d07e3eb5ba84", "value_start": 0, "value_end": 18, "entropy": 3.61437 } ] }, { "rule": "X AI API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "line_num": 1, "path": "./tests/samples/xai", "info": "FILE:./tests/samples/xai|RAW", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "value_start": 0, "value_end": 84, "entropy": 5.35637 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "line_num": 1, "path": "./tests/samples/xml_data.xml", "info": "FILE:./tests/samples/xml_data.xml|XML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn", "value_start": 8, "value_end": 58, "entropy": 4.83327 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "token : \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\"", "line_num": 1, "path": "./tests/samples/xml_data.xml", "info": "FILE:./tests/samples/xml_data.xml|XML", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "value_start": 9, "value_end": 115, "entropy": 5.09578 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/ DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5 BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0 caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "line_num": 1, "path": "./tests/samples/xml_data.xml", "info": "FILE:./tests/samples/xml_data.xml|XML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/ DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5 BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0 caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "value_start": 7, "value_end": 479, "entropy": 5.73206 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "password : Password for authorization BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", "line_num": 1, "path": "./tests/samples/xml_password.xml", "info": "FILE:./tests/samples/xml_password.xml|XML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Password", "value_start": 11, "value_end": 19, "entropy": 2.75 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "password : Password for authorization BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", "line_num": 1, "path": "./tests/samples/xml_password.xml", "info": "FILE:./tests/samples/xml_password.xml|XML", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d59-fa7e-beef-cafe-9129474bcd81", "value_start": 51, "value_end": 87, "entropy": 3.66606 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.169, "line_data_list": [ { "line": "password : cackle!", "line_num": 1, "path": "./tests/samples/xml_password.xml", "info": "FILE:./tests/samples/xml_password.xml|XML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 11, "value_end": 18, "entropy": 2.52164 } ] }, { "rule": "DOC_CREDENTIALS", "severity": "medium", "confidence": "moderate", "ml_probability": 0.002, "line_data_list": [ { "line": "password : peace_for_ukraine", "line_num": 1, "path": "./tests/samples/xml_password.xml", "info": "FILE:./tests/samples/xml_password.xml|XML", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "peace_for_ukraine", "value_start": 11, "value_end": 28, "entropy": 3.45482 } ] } ] ================================================ FILE: tests/data/no_filters_no_ml.json ================================================ [ { "rule": "1Password Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "line_num": 1, "path": "./tests/samples/1password", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "value_start": 0, "value_end": 656, "entropy": 5.94326 } ] }, { "rule": "BASE64 encoded PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpQcm9jLVR5cGU6IDQsRU5DUllQVEVECkRFSy1JbmZvOiBBRVMtMTI4LUNCQywwMzQ1NzY3MzQ1NjgzNjIzNDc2NTM3NDY1ODM2NDgyNgoKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQoKLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmc5MzQ3OTU4MzI4NDAyMzc5ODIzOTg2ODIzNzY4NzIzNDU2Cnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KCg==", "line_num": 1, "path": "./tests/samples/LS0t_n", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpQcm9jLVR5cGU6IDQsRU5DUllQVEVECkRFSy1JbmZvOiBBRVMtMTI4LUNCQywwMzQ1NzY3MzQ1NjgzNjIzNDc2NTM3NDY1ODM2NDgyNgoKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQoKLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmc5MzQ3OTU4MzI4NDAyMzc5ODIzOTg2ODIzNzY4NzIzNDU2Cnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KCg", "value_start": 0, "value_end": 3150, "entropy": 5.3348 } ] }, { "rule": "BASE64 encoded PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==", "line_num": 1, "path": "./tests/samples/LS0t_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg", "value_start": 0, "value_end": 3078, "entropy": 5.49785 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " final byte [] pkey = Base64.getMimeDecoder().decode(", "line_num": 35, "path": "./tests/samples/Sample.java", "info": "", "variable": "pkey", "variable_start": 22, "variable_end": 26, "value": "Base64.getMimeDecoder().decode(", "value_start": 29, "value_end": 60, "entropy": 3.90883 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " final byte [] pkey = Base64.getMimeDecoder().decode(text);", "line_num": 58, "path": "./tests/samples/Sample.java", "info": "", "variable": "pkey", "variable_start": 22, "variable_end": 26, "value": "Base64.getMimeDecoder().decode(text)", "value_start": 29, "value_end": 65, "entropy": 3.96132 } ] }, { "rule": "Akamai Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "line_num": 1, "path": "./tests/samples/akamai", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "value_start": 3, "value_end": 41, "entropy": 4.15557 } ] }, { "rule": "Anthropic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "line_num": 1, "path": "./tests/samples/antrhropic", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "value_start": 0, "value_end": 107, "entropy": 5.42952 } ] }, { "rule": "Anthropic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-Hg76543210", "line_num": 2, "path": "./tests/samples/antrhropic", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-Hg76543210", "value_start": 0, "value_end": 107, "entropy": 5.40378 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gi_reo_gi_api = \"DvMB_glvwjlEQ_uqIyn8k\";", "line_num": 1, "path": "./tests/samples/api.toml", "info": "", "variable": "gi_reo_gi_api", "variable_start": 0, "variable_end": 13, "value": "DvMB_glvwjlEQ_uqIyn8k", "value_start": 17, "value_end": 38, "entropy": 4.1066 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "entropy": 5.77034 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "line_num": 2, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "value_start": 20, "value_end": 213, "entropy": 5.78724 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "line_num": 3, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "value_start": 22, "value_end": 216, "entropy": 5.76529 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "line_num": 4, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "value_start": 24, "value_end": 218, "entropy": 5.76679 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"kerberos_authentication\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\"", "line_num": 1, "path": "./tests/samples/auth.hs", "info": "", "variable": "kerberos_authentication", "variable_start": 1, "variable_end": 24, "value": "YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA", "value_start": 28, "value_end": 66, "entropy": 4.27373 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"authorization\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\"", "line_num": 2, "path": "./tests/samples/auth.hs", "info": "", "variable": "authorization", "variable_start": 1, "variable_end": 14, "value": "aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA", "value_start": 18, "value_end": 56, "entropy": 4.52399 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "headers = {authorization: /oauth_signature=\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\"/, content_type: 'application/json; charset=utf-8'}", "line_num": 3, "path": "./tests/samples/auth.hs", "info": "", "variable": "authorization", "variable_start": 11, "variable_end": 24, "value": "/oauth_signature=", "value_start": 26, "value_end": 43, "entropy": 3.73452 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "", "variable": "Authorization", "variable_start": 0, "variable_end": 13, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "", "variable": "NTLM", "variable_start": 15, "variable_end": 19, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_TOKEN=", "line_num": 6, "path": "./tests/samples/auth_n.template", "info": "", "variable": "AUTH_TOKEN", "variable_start": 0, "variable_end": 10, "value": "", "value_start": 11, "value_end": 35, "entropy": 3.62581 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_TOKEN=", "line_num": 6, "path": "./tests/samples/auth_n.template", "info": "", "variable": "AUTH_TOKEN", "variable_start": 0, "variable_end": 10, "value": "", "value_start": 11, "value_end": 35, "entropy": 3.62581 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Basic Authorization", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Basic", "variable_start": 24, "variable_end": 29, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Bearer", "variable_start": 24, "variable_end": 30, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A3T1DJ4IS97DLLTH2SZ3", "value_start": 56, "value_end": 76, "entropy": 3.82193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 14, "value_end": 34, "entropy": 3.54644 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 14, "value_end": 34, "entropy": 3.54644 }, { "line": "filtered too: AKIALGSBKLIKEAREAL12 --access-key ", "line_num": 4, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY", "value_start": 49, "value_end": 89, "entropy": 4.39394 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY45X", "value_start": 35, "value_end": 55, "entropy": 3.54644 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY45X", "value_start": 35, "value_end": 55, "entropy": 3.54644 }, { "line": "filtered too: AKIALGSBKLIKEAREAL12 --access-key ", "line_num": 4, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY", "value_start": 49, "value_end": 89, "entropy": 4.39394 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "must be filtered: AKIAGIREOGIAEXAMPLE7", "line_num": 3, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAEXAMPLE7", "value_start": 18, "value_end": 38, "entropy": 3.34644 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "must be filtered: AKIAGIREOGIAEXAMPLE7", "line_num": 3, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAEXAMPLE7", "value_start": 18, "value_end": 38, "entropy": 3.34644 }, { "line": "filtered too: AKIALGSBKLIKEAREAL12 --access-key ", "line_num": 4, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY", "value_start": 49, "value_end": 89, "entropy": 4.39394 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "filtered too: AKIALGSBKLIKEAREAL12 --access-key ", "line_num": 4, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIALGSBKLIKEAREAL12", "value_start": 14, "value_end": 34, "entropy": 3.24644 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "filtered too: AKIALGSBKLIKEAREAL12 --access-key ", "line_num": 4, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIALGSBKLIKEAREAL12", "value_start": 14, "value_end": 34, "entropy": 3.24644 }, { "line": "filtered too: AKIALGSBKLIKEAREAL12 --access-key ", "line_num": 4, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY", "value_start": 49, "value_end": 89, "entropy": 4.39394 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "line_num": 8, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "value_start": 0, "value_end": 48, "entropy": 4.88684 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "line_num": 9, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "value_start": 0, "value_end": 128, "entropy": 5.61388 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY123\",", "line_num": 3, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY323", "value_start": 191, "value_end": 211, "entropy": 3.44644 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "X-Amz-Credential", "variable_start": 174, "variable_end": 190, "value": "AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy", "value_start": 191, "value_end": 251, "entropy": 4.6314 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "X-Amz-Key", "variable_start": 252, "variable_end": 261, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI", "value_start": 262, "value_end": 313, "entropy": 4.96135 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gireogi323.s3.amazonaws.com", "value_start": 32, "value_end": 59, "entropy": 3.75416 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY321\"", "line_num": 53, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 }, { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "AccessKeyId", "variable_start": 5, "variable_end": 16, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"Token\" : \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 9, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "Token", "variable_start": 5, "variable_end": 10, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 15, "value_end": 66, "entropy": 4.96135 } ] }, { "rule": "AWS MWS Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "", "variable": "AWS_MWS_KEY", "variable_start": 0, "variable_end": 11, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"url\" : \"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\"}", "line_num": 1, "path": "./tests/samples/aws_s3_bucket", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "circle-production-action-output.s3.amazonaws.com", "value_start": 18, "value_end": 66, "entropy": 4.02467 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9", "value_start": 0, "value_end": 132, "entropy": 5.16528 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9", "value_start": 0, "value_end": 132, "entropy": 5.16528 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0", "value_start": 133, "value_end": 1296, "entropy": 5.58725 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9", "value_start": 0, "value_end": 84, "entropy": 5.15238 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9", "value_start": 0, "value_end": 84, "entropy": 5.15238 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9", "value_start": 85, "value_end": 1009, "entropy": 5.59159 } ] }, { "rule": "Azure Storage Account Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "line_num": 5, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "value_start": 2, "value_end": 90, "entropy": 4.22483 } ] }, { "rule": "Azure Storage Account Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "f ooooooooooooooooooooooooooooooooooooooooooooooooooooJQQJ99AEAAAAAAAAAAAAAAAAAZFURg67", "line_num": 7, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ooooooooooooooooooooooooooooooooooooooooooooooooooooJQQJ99AEAAAAAAAAAAAAAAAAAZFURg67", "value_start": 2, "value_end": 86, "entropy": 1.89849 } ] }, { "rule": "Azure Secret Value", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "client_srt = \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\";", "line_num": 1, "path": "./tests/samples/azure_secret_value", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "value_start": 14, "value_end": 54, "entropy": 4.75306 } ] }, { "rule": "Bitbucket HTTP Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"bitbucket\" : \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\"", "line_num": 1, "path": "./tests/samples/bitbuckert_http_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l", "value_start": 15, "value_end": 64, "entropy": 4.94084 } ] }, { "rule": "Bitbucket App Password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "line_num": 1, "path": "./tests/samples/bitbucket_app_password", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "value_start": 11, "value_end": 47, "entropy": 4.5934 } ] }, { "rule": "Bitbucket App Password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "falsesampleATBBcXe6fczW96Vzwgvb4r8F2gZS54D591C4", "line_num": 2, "path": "./tests/samples/bitbucket_app_password", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATBBcXe6fczW96Vzwgvb4r8F2gZS54D591C4", "value_start": 11, "value_end": 47, "entropy": 4.64896 } ] }, { "rule": "Bitbucket Repository Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "", "variable": "Bitbucket Repository Access Token", "variable_start": 1, "variable_end": 34, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Brevo API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/brevo", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 89, "entropy": 4.64688 } ] }, { "rule": "Brevo API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xkeysib-12345678983f579a06f63a6fa0c8df4a56e645342dc875b80b5b3c90380352c0-hfeyJ6o3MTDHuoFZ", "line_num": 2, "path": "./tests/samples/brevo", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xkeysib-12345678983f579a06f63a6fa0c8df4a56e645342dc875b80b5b3c90380352c0-hfeyJ6o3MTDHuoFZ", "value_start": 0, "value_end": 89, "entropy": 4.62234 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg", "line_num": 1, "path": "./tests/samples/cmd_credential", "info": "", "variable": "passphrase", "variable_start": 16, "variable_end": 26, "value": "N1DdkUD3E73", "value_start": 27, "value_end": 38, "entropy": 3.0958 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "mysql -u root --password Sne3sd8AZjq", "line_num": 2, "path": "./tests/samples/cmd_credential", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "Sne3sd8AZjq", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Domain 'localhost' -Password 'Sjdn43ss@!'", "line_num": 3, "path": "./tests/samples/cmd_credential", "info": "", "variable": "Password", "variable_start": 21, "variable_end": 29, "value": "Sjdn43ss@!", "value_start": 31, "value_end": 41, "entropy": 3.12193 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " --oauth2-bearer \"eZs2fjkjD8hUcsQ37b8zHig==\" \\", "line_num": 7, "path": "./tests/samples/cmd_credential", "info": "", "variable": "oauth2-bearer", "variable_start": 6, "variable_end": 19, "value": "eZs2fjkjD8hUcsQ37b8zHig==", "value_start": 21, "value_end": 46, "entropy": 4.32386 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ConvertTo-SecureString -String -Force dsjUE#$gds8s", "line_num": 1, "path": "./tests/samples/cmd_secure_string", "info": "", "variable": "ConvertTo-SecureString -String -Force", "variable_start": 0, "variable_end": 37, "value": "dsjUE#$gds8s", "value_start": 38, "value_end": 50, "entropy": 3.02206 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"ConvertTo-SecureString \\\"4yd21JKH~GE8dkd\\\"\"", "line_num": 2, "path": "./tests/samples/cmd_secure_string", "info": "", "variable": "ConvertTo-SecureString", "variable_start": 1, "variable_end": 23, "value": "4yd21JKH~GE8dkd", "value_start": 26, "value_end": 41, "entropy": 3.5899 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gi_reo_gi_credential = \"K2u6mFw8wJOsAf\"", "line_num": 1, "path": "./tests/samples/credential.hs", "info": "", "variable": "gi_reo_gi_credential", "variable_start": 0, "variable_end": 20, "value": "K2u6mFw8wJOsAf", "value_start": 24, "value_end": 38, "entropy": 3.6645 } ] }, { "rule": "CURL User Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -X PUT -u \"admin:dG9rZW4g\" https://127.0.0.1 # TP", "line_num": 1, "path": "./tests/samples/curl_user_password", "info": "", "variable": "curl", "variable_start": 0, "variable_end": 4, "value": "dG9rZW4g", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "CURL User Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -X PUT -u \"$USER:$PASSWORD\" https://127.0.0.1 # FP", "line_num": 2, "path": "./tests/samples/curl_user_password", "info": "", "variable": "curl", "variable_start": 0, "variable_end": 4, "value": "$PASSWORD", "value_start": 22, "value_end": 31, "entropy": 2.9477 } ] }, { "rule": "DeepSeek API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": ">>>\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\u001b[0m<<<", "line_num": 1, "path": "./tests/samples/deepseek", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-615ef152bf865a131f88b23571dc4ee6", "value_start": 8, "value_end": 43, "entropy": 3.85416 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';", "line_num": 1, "path": "./tests/samples/digital_ocean_oauth_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c", "value_start": 14, "value_end": 85, "entropy": 4.05874 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 1, "path": "./tests/samples/digital_ocean_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 0, "value_end": 71, "entropy": 3.6568 } ] }, { "rule": "Discord Bot Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "line_num": 1, "path": "./tests/samples/discord_bot_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "value_start": 0, "value_end": 72, "entropy": 5.16257 } ] }, { "rule": "Discord Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "line_num": 1, "path": "./tests/samples/discord_webhook", "info": "", "variable": "discordapp.com/api/webhooks", "variable_start": 10, "variable_end": 37, "value": "/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "value_start": 37, "value_end": 125, "entropy": 5.23454 } ] }, { "rule": "Discord Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "F discord.com/api/webhooks/148392840000482200/OsnNHsifi5q3u2_there-are-not-the-webhook-you-are-looking-for_8HZjFgIi", "line_num": 3, "path": "./tests/samples/discord_webhook", "info": "", "variable": "discord.com/api/webhooks", "variable_start": 2, "variable_end": 26, "value": "/148392840000482200/OsnNHsifi5q3u2_there-are-not-the-webhook-you-are-looking-for_8HZjFgIi", "value_start": 26, "value_end": 115, "entropy": 4.83876 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNO", "line_num": 2, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "ZAQWS-XCDER-VBGTR-FRTGU-KLMNO", "value_start": 17, "value_end": 46, "entropy": 4.28023 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Activation key : ZAQWS-XCDER-*****-VBGTR-FRTGU", "line_num": 3, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "ZAQWS-XCDER-*****-VBGTR-FRTGU", "value_start": 17, "value_end": 46, "entropy": 3.87989 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"SecretApiKey\": \"string\"", "line_num": 4, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": "SecretApiKey", "variable_start": 1, "variable_end": 13, "value": "string", "value_start": 17, "value_end": 23, "entropy": 2.58496 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"SecretApiKey\": \"string\"", "line_num": 4, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": "SecretApiKey", "variable_start": 1, "variable_end": 13, "value": "string", "value_start": 17, "value_end": 23, "entropy": 2.58496 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"SecretApiKey\": \"string\"", "line_num": 4, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": "SecretApiKey", "variable_start": 1, "variable_end": 13, "value": "string", "value_start": 17, "value_end": 23, "entropy": 2.58496 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"UserKeyword\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\"", "line_num": 5, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1328E04-88B6-4E2A-A5C0-A4D9B21754C4", "value_start": 16, "value_end": 52, "entropy": 3.8055 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "line_num": 2, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "value_start": 17, "value_end": 46, "entropy": 4.21126 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password:!Dd5G4s9", "line_num": 3, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "!Dd5G4s9", "value_start": 9, "value_end": 17, "entropy": 3.0 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "line_num": 4, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "LONG_CREDENTIAL", "variable_start": 0, "variable_end": 15, "value": "AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "value_start": 17, "value_end": 5485, "entropy": 5.99409 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET = getenv(\"GEHE1MN15\", '')", "line_num": 2, "path": "./tests/samples/doc_get_n", "info": "", "variable": "SECRET", "variable_start": 0, "variable_end": 6, "value": "", "value_start": 30, "value_end": 30, "entropy": 0.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "if SECRET := getenv(\"CEKPET\", \"GEHEIMN1S\"):", "line_num": 1, "path": "./tests/samples/doc_get_p", "info": "", "variable": "SECRET", "variable_start": 3, "variable_end": 9, "value": "GEHEIMN1S", "value_start": 31, "value_end": 40, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PASSWORD = os.environ.get(\"PASSWORD\") or \"at5G6zi!m\"", "line_num": 5, "path": "./tests/samples/doc_get_p", "info": "", "variable": "PASSWORD", "variable_start": 0, "variable_end": 8, "value": "at5G6zi!m", "value_start": 42, "value_end": 51, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr11Gg!", "value_start": 13, "value_end": 23, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr12Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr13Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr14Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr15Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr16Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr17Gg!", "value_start": 21, "value_end": 31, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr19Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 16, "variable_end": 19, "value": "dipPr110Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr111Gg!", "value_start": 22, "value_end": 33, "entropy": 3.02717 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr112Gg!", "value_start": 14, "value_end": 25, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr114Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr115Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr116Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr117Gg!", "value_start": 26, "value_end": 37, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr118Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr119Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "dipPr120Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr121Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:master pass:dipPr122Gg!", "line_num": 23, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr122Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr124Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr125Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr126Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "--user master --password dipPr127Gg!", "line_num": 28, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr127Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 34, "variable_end": 42, "value": "dipPr128Gg!", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr129Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr130Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Pwd", "variable_start": 18, "variable_end": 21, "value": "dipPr131Gg!", "value_start": 22, "value_end": 33, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 13, "variable_end": 21, "value": "dipPr132Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 18, "variable_end": 26, "value": "dipPr133Gg!", "value_start": 27, "value_end": 38, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr134Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr135Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 17, "variable_end": 25, "value": "dipPr136Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "--username master --password dipPr137Gg!", "line_num": 38, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr137Gg!", "value_start": 29, "value_end": 40, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 16, "variable_end": 27, "value": "dipPr138Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 19, "variable_end": 30, "value": "dipPr139Gg!", "value_start": 31, "value_end": 42, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr140Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master/PASS:dipPr141Gg!", "line_num": 42, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PASS", "variable_start": 10, "variable_end": 14, "value": "dipPr141Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "passwd", "variable_start": 15, "variable_end": 21, "value": "dipPr142Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr143Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user=master,pass=dipPr144Gg!", "line_num": 45, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr144Gg!", "value_start": 17, "value_end": 28, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "dipPr145Gg!", "value_start": 9, "value_end": 20, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr146Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master,pass:dipPr147Gg!", "line_num": 48, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr147Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 10, "variable_end": 12, "value": "dipPr148Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 23, "variable_end": 25, "value": "dipPr149Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr151Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr152Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 19, "variable_end": 27, "value": "dipPr154Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr155Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYuser=master ANY_pass=dipPr156Gg!", "line_num": 57, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_pass", "variable_start": 15, "variable_end": 23, "value": "dipPr156Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr157Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr158Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 20, "variable_end": 32, "value": "dipPr159Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 19, "variable_end": 31, "value": "dipPr160Gg!", "value_start": 32, "value_end": 43, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_USER=master ANY_PASS=dipPr161Gg!", "line_num": 62, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_PASS", "variable_start": 16, "variable_end": 24, "value": "dipPr161Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 25, "variable_end": 33, "value": "dipPr162Gg!", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 34, "variable_end": 37, "value": "dipPr163Gg!", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr164Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY-password", "variable_start": 20, "variable_end": 32, "value": "dipPr165Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username:master pass:dipPr166Gg!", "line_num": 67, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 16, "variable_end": 20, "value": "dipPr166Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr168Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "dipPr169Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user:master pass:dipPr172Gg!", "line_num": 73, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr172Gg!", "value_start": 17, "value_end": 28, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr174Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr175Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr176Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "dipPr177Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 10, "variable_end": 18, "value": "dipPr178Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr179Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Loging:master Password:dipPr180Gg!", "line_num": 81, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 14, "variable_end": 22, "value": "dipPr180Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Loging:master Pwd:dipPr181Gg!", "line_num": 82, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Pwd", "variable_start": 14, "variable_end": 17, "value": "dipPr181Gg!", "value_start": 18, "value_end": 29, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 18, "variable_end": 20, "value": "dipPr182Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr185Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw id", "variable_start": 3, "variable_end": 8, "value": "master", "value_start": 9, "value_end": 15, "entropy": 2.58496 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr186Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr188Gg!", "value_start": 19, "value_end": 30, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr189Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "dipPr190Gg!", "value_start": 3, "value_end": 14, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr194Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "dipPr197Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "dipPr198Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:master@example.com,pw:IHQSB1GG!", "line_num": 102, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "IHQSB1GG!", "value_start": 25, "value_end": 34, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/PW:master/iPp0@GRq", "line_num": 1, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp0@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANYID(PW):master(iPp1@GRq)", "line_num": 2, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW)", "variable_start": 6, "variable_end": 9, "value": "iPp1@GRq", "value_start": 17, "value_end": 25, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/Password:master/iPp2@GRq", "line_num": 3, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp2@GRq", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/Pass:master/iPp3@GRq", "line_num": 4, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "master/iPp3@GRq", "value_start": 8, "value_end": 23, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:PW=master:iPp4@GRq", "line_num": 5, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master:iPp4@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/PW=master/iPp5@GRq", "line_num": 6, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp5@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "username/password:master/iPp7@GRq", "line_num": 8, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "password", "variable_start": 9, "variable_end": 17, "value": "master/iPp7@GRq", "value_start": 18, "value_end": 33, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id/passwd:master/iPp8@GRq", "line_num": 9, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "passwd", "variable_start": 3, "variable_end": 9, "value": "master/iPp8@GRq", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 22, "variable_end": 24, "value": "iPp10@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ID / PW : db / iPp14@GRq", "line_num": 15, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 6, "variable_end": 8, "value": "", "value_start": 11, "value_end": 11, "entropy": 0.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\uc544\uc774\ub514/PW:master/iPp16@GRq", "line_num": 17, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 4, "variable_end": 6, "value": "master/iPp16@GRq", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\uacc4\uc815/PW:master/iPp17@GRq", "line_num": 18, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp17@GRq", "value_start": 6, "value_end": 22, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32 id/pw:master/iPp19@GRq", "line_num": 20, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "pw", "variable_start": 15, "variable_end": 17, "value": "master/iPp19@GRq", "value_start": 18, "value_end": 34, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id/pass:master,iPp20@GRq", "line_num": 21, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "pass", "variable_start": 3, "variable_end": 7, "value": "master", "value_start": 8, "value_end": 14, "entropy": 2.58496 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/PWD:master/iPp21@GRq", "line_num": 22, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PWD", "variable_start": 3, "variable_end": 6, "value": "master/iPp21@GRq", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user/pwd:master/iPp22@GRq", "line_num": 23, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "pwd", "variable_start": 5, "variable_end": 8, "value": "master/iPp22@GRq", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "user/pass:master/iPp25@GRq", "line_num": 26, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "pass", "variable_start": 5, "variable_end": 9, "value": "master/iPp25@GRq", "value_start": 10, "value_end": 26, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/Password=master/iPp27@GRq", "line_num": 28, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp27@GRq", "value_start": 12, "value_end": 28, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/PW:master/iPp28@GRq", "line_num": 29, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp28@GRq", "value_start": 6, "value_end": 22, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password: ", "line_num": 35, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "line_num": 48, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "# password: keep empty", "line_num": 56, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 2, "variable_end": 10, "value": "keep", "value_start": 12, "value_end": 16, "entropy": 1.5 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY-Token:AIhq5Xyb1Gga9Q0", "line_num": 1, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY-Token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q0", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "token:AIhq5Xyb1Gga9Q2", "line_num": 3, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "AIhq5Xyb1Gga9Q2", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "KEY", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "SECRET KEY", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "secret=AIhq5Xyb1Gga9Q4", "line_num": 5, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q4", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "--token AIhq5Xyb1Gga9Q5", "line_num": 6, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 2, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q5", "value_start": 8, "value_end": 23, "entropy": 3.77356 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "secret:AIhq5Xyb1Gga9Q6", "line_num": 7, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q6", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_token=AIhq5Xyb1Gga9Q7", "line_num": 8, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q7", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-secret AIhq5Xyb1Gga9Q10", "line_num": 11, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 1, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q10", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY.secret=AIhq5Xyb1Gga9Q19", "line_num": 20, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY.secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q19", "value_start": 11, "value_end": 27, "entropy": 3.75 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "--secret=AIhq5Xyb1Gga9Q21", "line_num": 22, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 2, "variable_end": 8, "value": "AIhq5Xyb1Gga9Q21", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_secret:AIhq5Xyb1Gga9Q22", "line_num": 23, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q22", "value_start": 11, "value_end": 27, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Token:AIhq5Xyb1Gga9Q23", "line_num": 24, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Token", "variable_start": 1, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q23", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "API Secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "access key:AIhq5Xyb1Gga9Q26", "line_num": 27, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q26", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Secret Key", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_key=AIhq5Xyb1Gga9Q29", "line_num": 30, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_key", "variable_start": 0, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q29", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", "line_num": 32, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_token", "variable_start": 24, "variable_end": 33, "value": "AIhq5Xyb1Gga9Q31", "value_start": 34, "value_end": 50, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "access_token:AIhq5Xyb1Gga9Q33", "line_num": 34, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "access_token", "variable_start": 0, "variable_end": 12, "value": "AIhq5Xyb1Gga9Q33", "value_start": 13, "value_end": 29, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 15, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Authentication key", "variable_start": 0, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "page.action?spaceKey=LOGIC&title=QUANTUM\",", "line_num": 39, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "spaceKey", "variable_start": 12, "variable_end": 20, "value": "LOGIC", "value_start": 21, "value_end": 26, "entropy": 2.32193 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Enter token : This is a query parameter", "line_num": 40, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 6, "variable_end": 11, "value": "This", "value_start": 14, "value_end": 18, "entropy": 2.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"key\":\"attached_file_0\"", "line_num": 41, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 1, "variable_end": 4, "value": "attached_file_0", "value_start": 7, "value_end": 22, "entropy": 3.37356 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 3, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Password:master/IhqSb1Gg", "line_num": 5, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "master/IhqSb1Gg", "value_start": 9, "value_end": 24, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", "line_num": 6, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", "line_num": 7, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 11, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 53, "variable_end": 61, "value": "IhqSb1Gg", "value_start": 62, "value_end": 70, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/Pass:xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg", "line_num": 13, "path": "./tests/samples/doc_various", "info": "", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "xxxx:master/IhqSb1Gg", "value_start": 8, "value_end": 28, "entropy": 3.92193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", "line_num": 15, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 25, "variable_end": 28, "value": "IhqSb1Gg", "value_start": 29, "value_end": 37, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", "line_num": 16, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "IhqSb1Gg", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32(pw:IhqSb1Gg)", "line_num": 17, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32/pw:IhqSb1Gg", "line_num": 19, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "", "variable": "PWD", "variable_start": 43, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 22, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 42, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 23, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 37, "variable_end": 39, "value": "IhqSb1Gg", "value_start": 40, "value_end": 48, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 25, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 41, "variable_end": 49, "value": "IhqSb1Gg", "value_start": 50, "value_end": 58, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "IhqSb1Gg", "value_start": 48, "value_end": 56, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_password,default:IhqSb1Gg", "line_num": 31, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_password,default", "variable_start": 0, "variable_end": 20, "value": "IhqSb1Gg", "value_start": 21, "value_end": 29, "entropy": 3.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Key(ANYSecret):IhqSb1Gg", "line_num": 32, "path": "./tests/samples/doc_various", "info": "", "variable": "ANYSecret)", "variable_start": 4, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32 ANY_PW:IhqSb1Gg", "line_num": 34, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_PW", "variable_start": 12, "variable_end": 18, "value": "IhqSb1Gg", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32(ID/PW:IhqSb1Gg)", "line_num": 36, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "IhqSb1Gg", "value_start": 18, "value_end": 26, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", "line_num": 38, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 26, "variable_end": 29, "value": "IhqSb1Gg", "value_start": 30, "value_end": 38, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password for master:IhqSb1Gg", "line_num": 43, "path": "./tests/samples/doc_various", "info": "", "variable": "password for master", "variable_start": 0, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/Pass:xxxx:master/IhqSb1Gg xxxx:master/IhqSb1Gg", "line_num": 45, "path": "./tests/samples/doc_various", "info": "", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "xxxx:master/IhqSb1Gg", "value_start": 8, "value_end": 28, "entropy": 3.92193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "./tests/samples/doc_various", "info": "", "variable": "ANYpw", "variable_start": 8, "variable_end": 13, "value": "IhqSb1Ga", "value_start": 14, "value_end": 22, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", "line_num": 47, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", "line_num": 51, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\uacc4\uc815/Password-xxxx:master/IhqSb1Gg", "line_num": 55, "path": "./tests/samples/doc_various", "info": "", "variable": "Password-xxxx", "variable_start": 3, "variable_end": 16, "value": "master/IhqSb1Gg", "value_start": 17, "value_end": 32, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", "line_num": 56, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", "line_num": 61, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_pwd", "variable_start": 14, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Acount name:xxxx Initial Password:IhqSb1Gg", "line_num": 62, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 25, "variable_end": 33, "value": "IhqSb1Gg", "value_start": 34, "value_end": 42, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Access wifi:xxxx(PW:IhqSb1Gg)", "line_num": 63, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id/pw/port:master/IhqSb1Gg/xxxx", "line_num": 64, "path": "./tests/samples/doc_various", "info": "", "variable": "pw/port", "variable_start": 3, "variable_end": 10, "value": "master/IhqSb1Gg/xxxx", "value_start": 11, "value_end": 31, "entropy": 3.82193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-User:master -PasswordANY:IhqSb1Gg", "line_num": 66, "path": "./tests/samples/doc_various", "info": "", "variable": "PasswordANY", "variable_start": 14, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32(ID/PW:master/IhqSb1Gg)", "line_num": 70, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "master/IhqSb1Gg", "value_start": 18, "value_end": 33, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "(ID&PWD):master/IhqSb1Gg", "line_num": 71, "path": "./tests/samples/doc_various", "info": "", "variable": "PWD)", "variable_start": 4, "variable_end": 8, "value": "master/IhqSb1Gg", "value_start": 9, "value_end": 24, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 73, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "master@98.76.54.32,PW:IhqSb1Gg", "line_num": 74, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "98.76.54.32 pw:IhqSb1Gg", "line_num": 75, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "config:xxxx,PW:IhqSb1Gg", "line_num": 78, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-dbpwd VAL:xxxx", "line_num": 80, "path": "./tests/samples/doc_various", "info": "", "variable": "dbpwd VAL", "variable_start": 1, "variable_end": 10, "value": "xxxx", "value_start": 11, "value_end": 15, "entropy": -0.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 82, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 35, "variable_end": 37, "value": "IhqSb1Gg", "value_start": 38, "value_end": 46, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 84, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", "line_num": 85, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", "line_num": 87, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", "line_num": 90, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", "line_num": 93, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 94, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 37, "variable_end": 45, "value": "IhqSb1Gg", "value_start": 46, "value_end": 54, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", "line_num": 96, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 36, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", "line_num": 97, "path": "./tests/samples/doc_various", "info": "", "variable": "pass", "variable_start": 37, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 100, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", "line_num": 101, "path": "./tests/samples/doc_various", "info": "", "variable": "pass", "variable_start": 40, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 35, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID PW gildong.hong@example.com mailto:{1} IhqSb1Gg", "line_num": 103, "path": "./tests/samples/doc_various", "info": "", "variable": "PW gildong.hong@example.com mailto", "variable_start": 3, "variable_end": 37, "value": "", "value_start": 38, "value_end": 38, "entropy": 0.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", "line_num": 104, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 44, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", "line_num": 106, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ID/PW 98.76.54.32:xxx master/IhqSb1Gg", "line_num": 107, "path": "./tests/samples/doc_various", "info": "", "variable": "PW 98.76.54.32", "variable_start": 3, "variable_end": 17, "value": "", "value_start": 18, "value_end": 18, "entropy": 0.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", "line_num": 108, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 23, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "line_num": 1, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "value_start": 10, "value_end": 46, "entropy": 4.68354 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "line_num": 2, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "value_start": 10, "value_end": 46, "entropy": 3.89106 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "line_num": 3, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "value_start": 10, "value_end": 51, "entropy": 4.78414 } ] }, { "rule": "Docker Swarm Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "line_num": 4, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "value_start": 10, "value_end": 95, "entropy": 5.06757 } ] }, { "rule": "Docker Swarm Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "NEGATIVE: SWMTKN-1-7here4ar3not7he7oken5you4re1ooking4or1samplingonly-nh7cr8ap4o4fl58ektr42c8ek", "line_num": 5, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMTKN-1-7here4ar3not7he7oken5you4re1ooking4or1samplingonly-nh7cr8ap4o4fl58ektr42c8ek", "value_start": 10, "value_end": 95, "entropy": 4.65986 } ] }, { "rule": "Docker Swarm Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "line_num": 6, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "value_start": 10, "value_end": 62, "entropy": 4.95515 } ] }, { "rule": "Docker Swarm Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "NEGATIVE: SWMKEY-1-7c37Cc8654o6pExampleKeyTestOnlytbdZEgtKxZu8", "line_num": 7, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMKEY-1-7c37Cc8654o6pExampleKeyTestOnlytbdZEgtKxZu8", "value_start": 10, "value_end": 62, "entropy": 4.95006 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 7, "path": "./tests/samples/drawio", "info": "", "variable": "password", "variable_start": 1178, "variable_end": 1186, "value": "String<", "value_start": 1188, "value_end": 1197, "entropy": 2.9477 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 7, "path": "./tests/samples/drawio", "info": "", "variable": "salt", "variable_start": 2348, "variable_end": 2352, "value": "String<", "value_start": 2354, "value_end": 2363, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 13, "path": "./tests/samples/drawio", "info": "", "variable": "Password", "variable_start": 146, "variable_end": 154, "value": "Dw7^&amp;nd&lt;dj", "value_start": 162, "value_end": 187, "entropy": 3.59327 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 13, "path": "./tests/samples/drawio", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-b2e4-1afe-9129474bcd81", "value_start": 100, "value_end": 136, "entropy": 3.60702 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 16, "path": "./tests/samples/drawio", "info": "", "variable": "textpassword", "variable_start": 46, "variable_end": 58, "value": "Df34D&", "value_start": 60, "value_end": 69, "entropy": 2.9477 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 28, "path": "./tests/samples/drawio", "info": "", "variable": "token", "variable_start": 35, "variable_end": 40, "value": "String", "value_start": 42, "value_end": 48, "entropy": 2.58496 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 31, "path": "./tests/samples/drawio", "info": "", "variable": "secret", "variable_start": 35, "variable_end": 41, "value": "&", "value_start": 43, "value_end": 47, "entropy": 2.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 34, "path": "./tests/samples/drawio", "info": "", "variable": "pass", "variable_start": 35, "variable_end": 39, "value": "Dsfgh%$d&", "value_start": 41, "value_end": 53, "entropy": 3.58496 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 45, "path": "./tests/samples/drawio", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "value_start": 52, "value_end": 88, "entropy": 3.68703 } ] }, { "rule": "Dropbox API secret (long term)", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", "line_num": 1, "path": "./tests/samples/dropbox_api_secret_long_term", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", "value_start": 9, "value_end": 73, "entropy": 4.89362 } ] }, { "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", "line_num": 1, "path": "./tests/samples/dropbox_app_secret", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wpv1jq9xwanbn3n", "value_start": 24, "value_end": 39, "entropy": 3.45656 } ] }, { "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "negative case: inconshreveable", "line_num": 2, "path": "./tests/samples/dropbox_app_secret", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "inconshreveable", "value_start": 15, "value_end": 30, "entropy": 3.45656 } ] }, { "rule": "Dropbox OAuth2 API Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", "line_num": 1, "path": "./tests/samples/dropbox_oauth_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", "value_start": 15, "value_end": 153, "entropy": 5.61894 } ] }, { "rule": "Dynatrace API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, "path": "./tests/samples/dynatrace_api.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "value_start": 0, "value_end": 96, "entropy": 4.93241 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "# this is encrypted key that should be not found {\"secretKey\": \"ENC(2dfRFqV/cS6TzRd+JyO=)\"}", "line_num": 1, "path": "./tests/samples/encrypted_credential", "info": "", "variable": "secretKey", "variable_start": 51, "variable_end": 60, "value": "ENC(2dfRFqV/cS6TzRd+JyO=)", "value_start": 64, "value_end": 89, "entropy": 4.48386 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "# this is encrypted key that should be not found {\"secretKey\": \"ENC(2dfRFqV/cS6TzRd+JyO=)\"}", "line_num": 1, "path": "./tests/samples/encrypted_credential", "info": "", "variable": "secretKey", "variable_start": 51, "variable_end": 60, "value": "ENC(2dfRFqV/cS6TzRd+JyO=)", "value_start": 64, "value_end": 89, "entropy": 4.48386 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "", "variable": "GI_REO_GI_FACEBOOK_TOKEN", "variable_start": 0, "variable_end": 24, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Facebook App Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "line_num": 2, "path": "./tests/samples/facebook_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "value_start": 0, "value_end": 44, "entropy": 4.60694 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "line_num": 1, "path": "./tests/samples/figma", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "value_start": 0, "value_end": 45, "entropy": 4.98619 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "line_num": 2, "path": "./tests/samples/figma", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "value_start": 0, "value_end": 45, "entropy": 4.85286 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "line_num": 3, "path": "./tests/samples/figma", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "value_start": 0, "value_end": 45, "entropy": 0.76125 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test-app-domain-42.firebaseapp.com", "line_num": 1, "path": "./tests/samples/firebase_domain", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test-app-domain-42.firebaseapp.com", "value_start": 0, "value_end": 34, "entropy": 3.98423 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test2.io.firebaseio.com", "line_num": 2, "path": "./tests/samples/firebase_domain", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test2.io.firebaseio.com", "value_start": 0, "value_end": 23, "entropy": 3.52271 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", "line_num": 1, "path": "./tests/samples/github_classic_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ghp_00000000000000000000000000000004WZ4EQ", "value_start": 0, "value_end": 41, "entropy": 1.56292 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ghp_1010110010001010101001010101010101011001 # random", "line_num": 2, "path": "./tests/samples/github_classic_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ghp_1010110010001010101001010101010101011001", "value_start": 0, "value_end": 44, "entropy": 1.52877 } ] }, { "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/github_fine_granted_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 93, "entropy": 5.41519 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token", "line_num": 2, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP", "value_start": 0, "value_end": 39, "entropy": 4.59259 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret", "line_num": 3, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc", "value_start": 0, "value_end": 70, "entropy": 4.0466 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token", "line_num": 4, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gldt-9BeUoeWu2V9uUS3uLoMy", "value_start": 0, "value_end": 25, "entropy": 4.13366 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token", "line_num": 5, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrt-2CR8_eVxiio-1QmzPZwa", "value_start": 0, "value_end": 25, "entropy": 4.48386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "line_num": 6, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "value_start": 0, "value_end": 31, "entropy": 4.54275 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token", "line_num": 7, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL", "value_start": 0, "value_end": 28, "entropy": 4.42325 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token", "line_num": 8, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", "value_start": 0, "value_end": 46, "entropy": 3.96956 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glft-Aafqn5A31G-2VipZMh28 # Feed token", "line_num": 9, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glft-Aafqn5A31G-2VipZMh28", "value_start": 0, "value_end": 25, "entropy": 4.32386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token", "line_num": 10, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glimt-1jpqzsnw2n71om0r9kgt06os3", "value_start": 0, "value_end": 31, "entropy": 4.43807 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token", "line_num": 11, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg", "value_start": 0, "value_end": 58, "entropy": 5.18979 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies", "line_num": 12, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2", "value_start": 0, "value_end": 48, "entropy": 4.32185 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsoat-971om0ecn5A386r9k481 # SCIM Tokens", "line_num": 13, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsoat-971om0ecn5A386r9k481", "value_start": 0, "value_end": 27, "entropy": 4.45859 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token", "line_num": 14, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glffct-AnRWYdo3Si_Xm2Q6n7zu", "value_start": 0, "value_end": 27, "entropy": 4.60674 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token", "line_num": 15, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr", "value_start": 0, "value_end": 47, "entropy": 5.18204 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token", "line_num": 16, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ", "value_start": 0, "value_end": 38, "entropy": 4.70175 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token", "line_num": 18, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", "value_start": 0, "value_end": 29, "entropy": 4.58212 } ] }, { "rule": "Google API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key", "line_num": 1, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315", "value_start": 0, "value_end": 39, "entropy": 4.35298 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # Google OAuth Secret", "line_num": 2, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 35, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token", "line_num": 3, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S", "value_start": 0, "value_end": 51, "entropy": 5.01537 } ] }, { "rule": "Google OAuth Refresh Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token", "line_num": 4, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_", "value_start": 0, "value_end": 102, "entropy": 5.43821 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "line_num": 2, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "value_start": 0, "value_end": 72, "entropy": 4.80827 }, { "line": "4L2QMyTm6Rr0o46ytGiReoG1", "line_num": 4, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4L2QMyTm6Rr0o46ytGiReoG1", "value_start": 0, "value_end": 24, "entropy": 4.08496 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", "value_start": 6, "value_end": 78, "entropy": 4.80827 }, { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", "line_num": 1, "path": "./tests/samples/grafana_access_policy_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", "value_start": 22, "value_end": 130, "entropy": 5.1038 } ] }, { "rule": "Grafana Access Policy Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", "line_num": 1, "path": "./tests/samples/grafana_access_policy_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", "value_start": 18, "value_end": 130, "entropy": 5.15841 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", "line_num": 1, "path": "./tests/samples/grafana_provisioned_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0", "value_start": 11, "value_end": 106, "entropy": 3.77105 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", "line_num": 1, "path": "./tests/samples/grafana_provisioned_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", "value_start": 11, "value_end": 107, "entropy": 3.81531 } ] }, { "rule": "Grafana Service Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "line_num": 1, "path": "./tests/samples/grafana_service_accounts", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, "value_end": 46, "entropy": 4.71879 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.01691 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 3, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 4, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.00343 } ] }, { "rule": "Hashicorp Terraform Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 1, "path": "./tests/samples/hashicorp", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 90, "entropy": 5.47059 } ] }, { "rule": "Hashicorp Vault Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 2, "path": "./tests/samples/hashicorp", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 94, "entropy": 5.53423 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "line_num": 1, "path": "./tests/samples/heroku", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "value_start": 0, "value_end": 65, "entropy": 5.32822 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "line_num": 2, "path": "./tests/samples/heroku", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "value_start": 0, "value_end": 41, "entropy": 4.0555 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.70256 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "url/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/part", "line_num": 2, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 4, "value_end": 41, "entropy": 4.77702 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "hf_3478658437658347638475687346587374", "line_num": 5, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hf_3478658437658347638475687346587374", "value_start": 0, "value_end": 37, "entropy": 2.89079 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "line_num": 6, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "value_start": 0, "value_end": 37, "entropy": 4.62811 } ] }, { "rule": "Instagram Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "line_num": 1, "path": "./tests/samples/instagram_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, "value_end": 162, "entropy": 5.23164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/iso_ir_111.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOlRoZXJlIGFyZSBub3QgdGhlIHRva2VucyB5b3UncmUgbG9va2luZyA0", "line_num": 1, "path": "./tests/samples/jfrog_n", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmVmdGtuOlRoZXJlIGFyZSBub3QgdGhlIHRva2VucyB5b3UncmUgbG9va2luZyA0", "value_start": 0, "value_end": 64, "entropy": 4.90977 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVF0", "line_num": 2, "path": "./tests/samples/jfrog_n", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVF0", "value_start": 0, "value_end": 73, "entropy": 5.38134 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "line_num": 1, "path": "./tests/samples/jfrog_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "value_start": 20, "value_end": 64, "entropy": 5.23216 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "line_num": 1, "path": "./tests/samples/jfrog_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "value_start": 0, "value_end": 64, "entropy": 5.28891 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "line_num": 2, "path": "./tests/samples/jfrog_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "value_start": 0, "value_end": 73, "entropy": 5.35394 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "line_num": 1, "path": "./tests/samples/jira_confluence_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 63, "value_end": 107, "entropy": 4.60694 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: \"image/png\": \"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\n\",", "line_num": 2, "path": "./tests/samples/jira_confluence_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 67, "value_end": 111, "entropy": 4.60694 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "FP: \"image/png\": \"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/MDAwMToPTwEV1TLGOh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\n\",", "line_num": 3, "path": "./tests/samples/jira_confluence_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MDAwMToPTwEV1TLGOh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 67, "value_end": 111, "entropy": 4.7433 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=", "line_num": 1, "path": "./tests/samples/json_web_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0", "value_start": 0, "value_end": 407, "entropy": 5.27189 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, "path": "./tests/samples/json_web_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "value_start": 10, "value_end": 75, "entropy": 5.03815 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "not detected: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.NiIsInR5cCI6IkpXV.NiIsInR5cCI6IkpXV", "line_num": 2, "path": "./tests/samples/json_web_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.NiIsInR5cCI6IkpXV.NiIsInR5cCI6IkpXV", "value_start": 14, "value_end": 86, "entropy": 4.3641 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"[EC]\",", "line_num": 3, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"[EC", "value_start": 8, "value_end": 19, "entropy": 3.02717 }, { "line": " \"d\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\"", "line_num": 4, "path": "./tests/samples/jwk.json", "info": "", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-", "value_start": 14, "value_end": 57, "entropy": 4.87953 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"RSA\",", "line_num": 7, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"RSA\"", "value_start": 8, "value_end": 20, "entropy": 2.9183 }, { "line": " \"d\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\"", "line_num": 10, "path": "./tests/samples/jwk.json", "info": "", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY", "value_start": 14, "value_end": 100, "entropy": 5.43459 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"oct\",", "line_num": 13, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"oct\"", "value_start": 8, "value_end": 20, "entropy": 2.75163 }, { "line": " \"k\": \"WrMwQfoNaHTgXU5fZvRGAD\"", "line_num": 16, "path": "./tests/samples/jwk.json", "info": "", "variable": "k", "variable_start": 9, "variable_end": 10, "value": "WrMwQfoNaHTgXU5fZvRGAD", "value_start": 14, "value_end": 36, "entropy": 4.36852 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/key.go", "info": "", "variable": "PKEY", "variable_start": 4, "variable_end": 8, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 12, "value_end": 47, "entropy": 3.58716 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 12, "value_end": 47, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 2, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 3, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 4, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 5, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 6, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "line_num": 1, "path": "./tests/samples/key.php", "info": "", "variable": "$key", "variable_start": 0, "variable_end": 4, "value": "gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "value_start": 8, "value_end": 64, "entropy": 4.96772 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );", "line_num": 3, "path": "./tests/samples/key.php", "info": "", "variable": "PASSWORD", "variable_start": 9, "variable_end": 17, "value": "2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG", "value_start": 22, "value_end": 53, "entropy": 4.63162 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "pkey = (\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\"", "line_num": 1, "path": "./tests/samples/key.py", "info": "", "variable": "pkey", "variable_start": 0, "variable_end": 4, "value": "LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn", "value_start": 9, "value_end": 71, "entropy": 4.71236 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "print(\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\")", "line_num": 7, "path": "./tests/samples/key.py", "info": "", "variable": "key", "variable_start": 34, "variable_end": 37, "value": "dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB", "value_start": 38, "value_end": 93, "entropy": 4.96282 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PKEY = \"\"\"-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 9, "path": "./tests/samples/key.py", "info": "", "variable": "PKEY", "variable_start": 0, "variable_end": 4, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 10, "value_end": 45, "entropy": 3.58716 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "PKEY = \"\"\"-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 9, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 10, "value_end": 45, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 10, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 11, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 12, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 13, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 14, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----\"\"\"", "line_num": 15, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"key\": \"api_key\",", "line_num": 2, "path": "./tests/samples/key_value.json", "info": "", "variable": "key", "variable_start": 5, "variable_end": 8, "value": "api_key", "value_start": 12, "value_end": 19, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"pass_mask32\": \"0x31c45018\",", "line_num": 7, "path": "./tests/samples/key_value.json", "info": "", "variable": "pass_mask32", "variable_start": 9, "variable_end": 20, "value": "0x31c45018", "value_start": 24, "value_end": 34, "entropy": 2.92193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"pass_mask64\": \"0x81103c1452dd61cd\",", "line_num": 8, "path": "./tests/samples/key_value.json", "info": "", "variable": "pass_mask64", "variable_start": 9, "variable_end": 20, "value": "0x81103c1452dd61cd", "value_start": 24, "value_end": 42, "entropy": 3.2391 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "line_num": 1, "path": "./tests/samples/llama", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "value_start": 0, "value_end": 52, "entropy": 5.03958 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "line_num": 2, "path": "./tests/samples/llama", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "value_start": 0, "value_end": 52, "entropy": 5.05602 } ] }, { "rule": "MailChimp API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "mailchimp = \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\"", "line_num": 1, "path": "./tests/samples/mailchimp_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36", "value_start": 13, "value_end": 50, "entropy": 4.75662 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "key-a25a4ac62a074cd52c668c6b9937cf40", "line_num": 1, "path": "./tests/samples/mailgun", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "key-a25a4ac62a074cd52c668c6b9937cf40", "value_start": 0, "value_end": 36, "entropy": 3.91661 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "line_num": 2, "path": "./tests/samples/mailgun", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "value_start": 0, "value_end": 50, "entropy": 3.85669 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Netlify Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "line_num": 1, "path": "./tests/samples/netlify", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "value_start": 0, "value_end": 40, "entropy": 4.61531 } ] }, { "rule": "Netlify Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvtestEXAMPLE", "line_num": 2, "path": "./tests/samples/netlify", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvtestEXAMPLE", "value_start": 0, "value_end": 40, "entropy": 4.66531 } ] }, { "rule": "NKEY Seed", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "line_num": 2, "path": "./tests/samples/nkey_seed", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "value_start": 3, "value_end": 61, "entropy": 4.55826 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'", "line_num": 1, "path": "./tests/samples/nonce.py", "info": "", "variable": "nonce", "variable_start": 0, "variable_end": 5, "value": "bsfcvir57nt40rydvtbhs8lzbgljmet5", "value_start": 9, "value_end": 41, "entropy": 4.39032 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password: F1lT3ReDw17hQoT3s", "line_num": 3, "path": "./tests/samples/nonce.py", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "F1lT3ReDw17hQoT3s", "value_start": 10, "value_end": 27, "entropy": 3.73452 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\", "line_num": 7, "path": "./tests/samples/nonce.py", "info": "", "variable": "key_wrap", "variable_start": 0, "variable_end": 8, "value": "KJHhJKhKU7yguyuyfrtsdESffhjgkhYT", "value_start": 12, "value_end": 44, "entropy": 4.11673 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK", "line_num": 11, "path": "./tests/samples/nonce.py", "info": "", "variable": "key_multi", "variable_start": 0, "variable_end": 9, "value": "KJHfdjs8767gr54534wsFHGf5hJKhK", "value_start": 15, "value_end": 45, "entropy": 4.12323 } ] }, { "rule": "Notion Integration Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "line_num": 1, "path": "./tests/samples/notion", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "value_start": 0, "value_end": 50, "entropy": 5.06876 } ] }, { "rule": "Notion Integration Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ntn_123465789l62EXAMPLEKpjiCVEXbx4CBxkftestEXAMPLE", "line_num": 2, "path": "./tests/samples/notion", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ntn_123465789l62EXAMPLEKpjiCVEXbx4CBxkftestEXAMPLE", "value_start": 0, "value_end": 50, "entropy": 4.82147 } ] }, { "rule": "NPM Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "negative:npm_NFX6dCpmIWvQ7megnY0AtQwkoKzWcEXAMPLE", "line_num": 1, "path": "./tests/samples/npm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "npm_NFX6dCpmIWvQ7megnY0AtQwkoKzWcEXAMPLE", "value_start": 9, "value_end": 49, "entropy": 4.85306 } ] }, { "rule": "NPM Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "positive: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", "line_num": 2, "path": "./tests/samples/npm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 9, "value_end": 49, "entropy": 4.80306 } ] }, { "rule": "NTLM Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "line_num": 1, "path": "./tests/samples/ntlm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "value_start": 10, "value_end": 190, "entropy": 3.79713 } ] }, { "rule": "NTLM Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Negative: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmThisIsAnExamplewByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "line_num": 2, "path": "./tests/samples/ntlm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmThisIsAnExamplewByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "value_start": 10, "value_end": 190, "entropy": 3.94022 } ] }, { "rule": "NuGet API key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'", "line_num": 1, "path": "./tests/samples/nuget_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam", "value_start": 5, "value_end": 51, "entropy": 4.56129 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 51, "entropy": 5.22625 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "line_num": 3, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "value_start": 0, "value_end": 56, "entropy": 5.25816 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-1234567c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "line_num": 6, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-1234567c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "value_start": 0, "value_end": 51, "entropy": 5.1086 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "line_num": 7, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "value_start": 0, "value_end": 56, "entropy": 4.12555 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "WXFES7QNTET5DQYC", "line_num": 1, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WXFES7QNTET5DQYC", "value_start": 0, "value_end": 16, "entropy": 3.625 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "line_num": 2, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "value_start": 0, "value_end": 32, "entropy": 4.14032 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "WXFES7QNTET5DQYC/WfRCqbCGkCJa8MRsXo0zxuGsIIM+5TQDRi93VZYUx0rGCOb8PO08LeqmfA1", "line_num": 8, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WXFES7QNTET5DQYC", "value_start": 0, "value_end": 16, "entropy": 3.625 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "fGDjHpfF6R0LniBVBBF5fk/JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB/p4N7XMkL7gf0ulmwlxSl", "line_num": 10, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "value_start": 23, "value_end": 55, "entropy": 4.14032 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "WXFES7QN4EXAMPLE", "line_num": 11, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WXFES7QN4EXAMPLE", "value_start": 0, "value_end": 16, "entropy": 3.57782 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "https://oauth.myapp.com/v3/access_token?app_id=my-client-id&app_secret=my-client-password&code=q4C1a20qS&redirect_uri=http%3A%2F%2Flocalhost%2Fdummy-demo", "line_num": 3, "path": "./tests/samples/pass_filtered", "info": "", "variable": "app_secret", "variable_start": 60, "variable_end": 70, "value": "my-client-password", "value_start": 71, "value_end": 89, "entropy": 3.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password = \"0xAb19D82E7f546cC3\"", "line_num": 4, "path": "./tests/samples/pass_filtered", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "0xAb19D82E7f546cC3", "value_start": 12, "value_end": 30, "entropy": 4.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password_id = 2938479", "line_num": 5, "path": "./tests/samples/pass_filtered", "info": "", "variable": "password_id", "variable_start": 0, "variable_end": 11, "value": "2938479", "value_start": 14, "value_end": 21, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "gi_reo_gi_passwd", "variable_start": 0, "variable_end": 16, "value": "cAc48k1Zd7", "value_start": 20, "value_end": 30, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "password_confirmation", "variable_start": 33, "variable_end": 54, "value": "cAc48k1Zd7", "value_start": 58, "value_end": 68, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "mypw: KrAcMe12345,", "line_num": 2, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "mypw", "variable_start": 0, "variable_end": 4, "value": "KrAcMe12345", "value_start": 6, "value_end": 17, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "masked_password = *****1*****2;", "line_num": 3, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "masked_password", "variable_start": 0, "variable_end": 15, "value": "*****1*****2", "value_start": 18, "value_end": 30, "entropy": 0.81669 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password = \"cackle!\"", "line_num": 1, "path": "./tests/samples/password.gradle", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 12, "value_end": 19, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 9, "path": "./tests/samples/password.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password = \"MYPSWRD!@#$%^&*\"", "line_num": 1, "path": "./tests/samples/password.tfvars", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "MYPSWRD!@#$%^&*", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "#define PASSWORD 0x0dead1beef7cafe2", "line_num": 1, "path": "./tests/samples/password_FALSE", "info": "", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "0x0dead1beef7cafe2", "value_start": 17, "value_end": 35, "entropy": 3.28104 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password = \"abc\"", "line_num": 3, "path": "./tests/samples/password_FALSE", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "", "value_start": 11, "value_end": 11, "entropy": 0.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]\"H3Y@6$#I4V*R^\"+B,2P6`A)UL", "line_num": 8, "path": "./tests/samples/password_FALSE", "info": "", "variable": "]PW", "variable_start": 4, "variable_end": 7, "value": "2Z.Q?2M^S", "value_start": 8, "value_end": 17, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA", "line_num": 1, "path": "./tests/samples/password_TRUE", "info": "", "variable": "MYSQLPASS", "variable_start": 0, "variable_end": 9, "value": "Ce7shE0ENPiBlE_EdEose0cBAA", "value_start": 11, "value_end": 37, "entropy": 3.8693 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "my_pw: nCzx8A8#!", "line_num": 2, "path": "./tests/samples/password_TRUE", "info": "", "variable": "my_pw", "variable_start": 0, "variable_end": 5, "value": "nCzx8A8#!", "value_start": 7, "value_end": 16, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "val password: String = \"exord13Paw64\", // scala", "line_num": 3, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "exord13Paw64", "value_start": 24, "value_end": 36, "entropy": 3.58496 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "def connect(passwd: str = \"cq2tPr1a2\"): # python default arg", "line_num": 4, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "cq2tPr1a2", "value_start": 27, "value_end": 36, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "if passworsd == \"q4c1a2oPd\": # __eq__ separator", "line_num": 5, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "q4c1a2oPd", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "if passworsd != \"x6s7djtEa\": # __ne__ separator", "line_num": 6, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "x6s7djtEa", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password=2bkJgtJDiLcq1t", "line_num": 7, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "2bkJgtJDiLcq1t", "value_start": 9, "value_end": 23, "entropy": 3.52164 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passin", "variable_start": 33, "variable_end": 39, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "", "variable": "pass", "variable_start": 41, "variable_end": 45, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;", "line_num": 12, "path": "./tests/samples/password_TRUE", "info": "", "variable": "MYSQL_DATABASE_PASSWORD", "variable_start": 25, "variable_end": 48, "value": "2IWJD88FH4Y", "value_start": 49, "value_end": 60, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "#define password \"n84ASM54y4\"", "line_num": 15, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "#define password {0x48, 0x65, 0x6C, 0x6C, 0x30}", "line_num": 16, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "0x48, 0x65, 0x6C, 0x6C, 0x30", "value_start": 18, "value_end": 46, "entropy": 3.02613 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "%define PASSWORD \"n84ASM54y4\"", "line_num": 18, "path": "./tests/samples/password_TRUE", "info": "", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "%global PASSWORD \"n84RPM54y4\"", "line_num": 19, "path": "./tests/samples/password_TRUE", "info": "", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84RPM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SET password \"n83.bat47Fy4\"", "line_num": 21, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "n83.bat47Fy4", "value_start": 14, "value_end": 26, "entropy": 3.4183 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"#define\\tpassword\\t\\\"n84ASM54y4\\\"\"", "line_num": 23, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "n84ASM54y4", "value_start": 22, "value_end": 32, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "line_num": 25, "path": "./tests/samples/password_TRUE", "info": "", "variable": "WPA2_PASSWORD", "variable_start": 0, "variable_end": 13, "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "value_start": 15, "value_end": 79, "entropy": 3.67082 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/password_utf16.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ \"password\": \"dkajc\u00f61\"", "line_num": 9, "path": "./tests/samples/password_western.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajc\u00f61", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "PayPal Braintree Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "line_num": 1, "path": "./tests/samples/paypal_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "value_start": 0, "value_end": 73, "entropy": 4.39985 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", "line_num": 2, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 13, "value_end": 44, "entropy": 3.38229 }, { "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "line_num": 3, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "value_start": 0, "value_end": 108, "entropy": 5.52555 }, { "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "line_num": 4, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "value_start": 0, "value_end": 110, "entropy": 5.49388 }, { "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "line_num": 5, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "value_start": 0, "value_end": 106, "entropy": 5.44383 }, { "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "line_num": 6, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "value_start": 0, "value_end": 90, "entropy": 5.53586 }, { "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "line_num": 7, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "value_start": 0, "value_end": 96, "entropy": 5.46977 }, { "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "line_num": 8, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "value_start": 0, "value_end": 110, "entropy": 5.55951 }, { "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "line_num": 9, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "value_start": 0, "value_end": 112, "entropy": 5.49108 }, { "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "line_num": 10, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "value_start": 0, "value_end": 114, "entropy": 5.57587 }, { "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "line_num": 11, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "value_start": 0, "value_end": 63, "entropy": 4.72341 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", "line_num": 14, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "value_start": 16, "value_end": 262, "entropy": 5.56558 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "line_num": 27, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 47, "entropy": 3.8375 }, { "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "line_num": 28, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, "value_end": 120, "entropy": 3.30679 }, { "line": "-----END LOW ENTROPY PRIVATE KEY-----", "line_num": 29, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 37, "entropy": 3.55488 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " * -----BEGIN PGP PRIVATE KEY BLOCK-----", "line_num": 35, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 42, "entropy": 3.62218 }, { "line": " * Version: GnuPG v1.4.12 (GNU/Linux)", "line_num": 36, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": " * Version: GnuPG v1.4.12 (GNU/Linux)", "value_start": 0, "value_end": 39, "entropy": 4.33255 }, { "line": "", "line_num": 37, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "", "value_start": 0, "value_end": 0, "entropy": 0.0 }, { "line": " * KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "line_num": 38, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "line_num": 39, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " //\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "line_num": 40, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "value_start": 4, "value_end": 68, "entropy": 5.20695 }, { "line": " ///\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "line_num": 41, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "value_start": 5, "value_end": 69, "entropy": 5.13876 }, { "line": " // UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "line_num": 42, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "value_start": 6, "value_end": 70, "entropy": 5.19868 }, { "line": " /// q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "line_num": 43, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "value_start": 7, "value_end": 71, "entropy": 5.13876 }, { "line": "// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/", "line_num": 44, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1", "value_start": 7, "value_end": 71, "entropy": 5.17157 }, { "line": "# # # * 874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "line_num": 45, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#+#+#+# * IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "line_num": 46, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "value_start": 11, "value_end": 75, "entropy": 5.17157 }, { "line": " + 'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +", "line_num": 47, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi", "value_start": 6, "value_end": 70, "entropy": 5.10751 }, { "line": " +\"\" +\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\"+", "line_num": 48, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh", "value_start": 8, "value_end": 72, "entropy": 5.10493 }, { "line": " * pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "line_num": 49, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "value_start": 5, "value_end": 69, "entropy": 5.23407 }, { "line": " * gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "line_num": 50, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "value_start": 5, "value_end": 69, "entropy": 5.15977 }, { "line": " * QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "line_num": 51, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "value_start": 5, "value_end": 69, "entropy": 5.20892 }, { "line": " * iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "line_num": 52, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "value_start": 5, "value_end": 69, "entropy": 4.94102 }, { "line": " * 5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "line_num": 53, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "value_start": 5, "value_end": 69, "entropy": 5.28891 }, { "line": " * HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "line_num": 54, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "line_num": 55, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "line_num": 56, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " * OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "line_num": 57, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "value_start": 5, "value_end": 69, "entropy": 5.04087 }, { "line": " * idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "line_num": 58, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "value_start": 5, "value_end": 69, "entropy": 5.14798 }, { "line": " * TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "line_num": 59, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "value_start": 5, "value_end": 69, "entropy": 5.17923 }, { "line": " * /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "line_num": 60, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "value_start": 5, "value_end": 69, "entropy": 4.99017 }, { "line": " * OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "line_num": 61, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "value_start": 5, "value_end": 69, "entropy": 5.21461 }, { "line": " * 4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "line_num": 62, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "value_start": 5, "value_end": 69, "entropy": 5.07782 }, { "line": " * sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "line_num": 63, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "value_start": 5, "value_end": 69, "entropy": 5.10907 }, { "line": " * ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "line_num": 64, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "value_start": 5, "value_end": 69, "entropy": 5.09314 }, { "line": " * n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "line_num": 65, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "value_start": 5, "value_end": 49, "entropy": 4.98773 }, { "line": " * =JG+I", "line_num": 66, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "=JG+I", "value_start": 5, "value_end": 10, "entropy": 2.32193 }, { "line": " * -----END PGP PRIVATE KEY BLOCK-----", "line_num": 67, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 40, "entropy": 3.62274 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "k = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 1, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 7, "value_end": 34, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 2, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 10, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "#6 0.245 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 9, "value_end": 36, "entropy": 3.20029 }, { "line": "#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "line_num": 3, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "value_start": 9, "value_end": 73, "entropy": 4.69647 }, { "line": "#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "line_num": 4, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "value_start": 9, "value_end": 73, "entropy": 4.99586 }, { "line": "#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "line_num": 5, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "value_start": 9, "value_end": 73, "entropy": 5.13462 }, { "line": "#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "line_num": 6, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "value_start": 9, "value_end": 73, "entropy": 5.12086 }, { "line": "#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "line_num": 7, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "value_start": 9, "value_end": 73, "entropy": 4.78866 }, { "line": "#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "line_num": 8, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "value_start": 9, "value_end": 73, "entropy": 4.74561 }, { "line": "#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "line_num": 9, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "value_start": 9, "value_end": 73, "entropy": 4.89577 }, { "line": "#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "line_num": 10, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "value_start": 9, "value_end": 73, "entropy": 4.81189 }, { "line": "#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "line_num": 11, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "value_start": 9, "value_end": 73, "entropy": 4.74717 }, { "line": "#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "line_num": 12, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "value_start": 9, "value_end": 73, "entropy": 4.72227 }, { "line": "#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "line_num": 13, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "value_start": 9, "value_end": 73, "entropy": 4.71244 }, { "line": "#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "line_num": 14, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "value_start": 9, "value_end": 73, "entropy": 4.85947 }, { "line": "#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "line_num": 15, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "value_start": 9, "value_end": 73, "entropy": 4.86673 }, { "line": "#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "line_num": 16, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "value_start": 9, "value_end": 73, "entropy": 4.72006 }, { "line": "#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "line_num": 17, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "value_start": 9, "value_end": 73, "entropy": 4.49369 }, { "line": "#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "line_num": 18, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "value_start": 9, "value_end": 73, "entropy": 4.85141 }, { "line": "#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "line_num": 19, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "value_start": 9, "value_end": 73, "entropy": 4.92157 }, { "line": "#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "line_num": 20, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "value_start": 9, "value_end": 73, "entropy": 4.71436 }, { "line": "#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "line_num": 21, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "value_start": 9, "value_end": 73, "entropy": 4.69102 }, { "line": "#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "line_num": 22, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "value_start": 9, "value_end": 73, "entropy": 4.55202 }, { "line": "#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "line_num": 23, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "value_start": 9, "value_end": 73, "entropy": 4.70776 }, { "line": "#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "line_num": 24, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "value_start": 9, "value_end": 73, "entropy": 4.68689 }, { "line": "#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "line_num": 25, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "value_start": 9, "value_end": 73, "entropy": 4.85337 }, { "line": "#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "line_num": 26, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "value_start": 9, "value_end": 73, "entropy": 4.79657 }, { "line": "#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "line_num": 27, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "value_start": 9, "value_end": 73, "entropy": 4.76945 }, { "line": "#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "line_num": 28, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "value_start": 9, "value_end": 73, "entropy": 4.70126 }, { "line": "#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "line_num": 29, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "value_start": 9, "value_end": 73, "entropy": 4.74525 }, { "line": "#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "line_num": 30, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "line_num": 31, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "value_start": 9, "value_end": 73, "entropy": 4.84924 }, { "line": "#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "line_num": 32, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "value_start": 9, "value_end": 73, "entropy": 4.78518 }, { "line": "#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "line_num": 33, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "value_start": 9, "value_end": 73, "entropy": 4.73346 }, { "line": "#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "line_num": 34, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "value_start": 9, "value_end": 73, "entropy": 4.69143 }, { "line": "#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "line_num": 35, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "line_num": 36, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "value_start": 9, "value_end": 73, "entropy": 4.94712 }, { "line": "#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "line_num": 37, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "value_start": 9, "value_end": 73, "entropy": 5.09727 }, { "line": "#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "line_num": 38, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "line_num": 39, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "line_num": 40, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "value_start": 9, "value_end": 73, "entropy": 5.46875 }, { "line": "#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "line_num": 41, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "line_num": 42, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "value_start": 9, "value_end": 73, "entropy": 5.17923 }, { "line": "#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "line_num": 43, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "line_num": 44, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "line_num": 45, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "line_num": 46, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "value_start": 9, "value_end": 73, "entropy": 5.10751 }, { "line": "#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "line_num": 47, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "line_num": 48, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "line_num": 49, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "line_num": 50, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "line_num": 51, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "line_num": 52, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "value_start": 9, "value_end": 73, "entropy": 5.32782 }, { "line": "#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "line_num": 53, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "line_num": 54, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "value_start": 9, "value_end": 73, "entropy": 5.07212 }, { "line": "#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "line_num": 55, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "line_num": 56, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "line_num": 57, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "value_start": 9, "value_end": 73, "entropy": 5.23407 }, { "line": "#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "line_num": 58, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "line_num": 59, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "value_start": 9, "value_end": 73, "entropy": 5.19516 }, { "line": "#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "line_num": 60, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "line_num": 61, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "value_start": 9, "value_end": 73, "entropy": 5.17157 }, { "line": "#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "line_num": 62, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "value_start": 9, "value_end": 73, "entropy": 5.24173 }, { "line": "#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "line_num": 63, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "line_num": 64, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "value_start": 9, "value_end": 73, "entropy": 5.15821 }, { "line": "#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "line_num": 65, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "value_start": 9, "value_end": 73, "entropy": 5.04657 }, { "line": "#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "line_num": 66, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "line_num": 67, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "value_start": 9, "value_end": 73, "entropy": 5.11673 }, { "line": "#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "line_num": 68, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "value_start": 9, "value_end": 73, "entropy": 4.92197 }, { "line": "#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "line_num": 69, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "value_start": 9, "value_end": 73, "entropy": 5.20282 }, { "line": "#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "line_num": 70, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "value_start": 9, "value_end": 73, "entropy": 5.30836 }, { "line": "#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "line_num": 71, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "line_num": 72, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "value_start": 9, "value_end": 73, "entropy": 5.19102 }, { "line": "#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "line_num": 73, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "line_num": 74, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "value_start": 9, "value_end": 73, "entropy": 5.08392 }, { "line": "#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "line_num": 75, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "line_num": 76, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "value_start": 9, "value_end": 73, "entropy": 5.33195 }, { "line": "#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "line_num": 77, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "value_start": 9, "value_end": 73, "entropy": 5.16743 }, { "line": "#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "line_num": 78, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "value_start": 9, "value_end": 73, "entropy": 5.26118 }, { "line": "#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "line_num": 79, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "value_start": 9, "value_end": 73, "entropy": 5.21048 }, { "line": "#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "line_num": 80, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "line_num": 81, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "line_num": 82, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "value_start": 9, "value_end": 73, "entropy": 4.99017 }, { "line": "#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "line_num": 83, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "value_start": 9, "value_end": 73, "entropy": 5.38266 }, { "line": "#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "line_num": 84, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "value_start": 9, "value_end": 73, "entropy": 5.28477 }, { "line": "#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "line_num": 85, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "line_num": 86, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "value_start": 9, "value_end": 73, "entropy": 5.10493 }, { "line": "#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "line_num": 87, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "line_num": 88, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "line_num": 89, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "line_num": 90, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "line_num": 91, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "value_start": 9, "value_end": 73, "entropy": 5.16391 }, { "line": "#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "line_num": 92, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "value_start": 9, "value_end": 73, "entropy": 5.31602 }, { "line": "#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "line_num": 93, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "line_num": 94, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "value_start": 9, "value_end": 73, "entropy": 4.96658 }, { "line": "#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "line_num": 95, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "line_num": 96, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "value_start": 9, "value_end": 73, "entropy": 5.10907 }, { "line": "#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "line_num": 97, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "line_num": 98, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "line_num": 99, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "value_start": 9, "value_end": 73, "entropy": 5.27711 }, { "line": "#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "line_num": 100, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "line_num": 101, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "value_start": 9, "value_end": 73, "entropy": 5.05423 }, { "line": "#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "line_num": 102, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "value_start": 9, "value_end": 73, "entropy": 4.90408 }, { "line": "#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "line_num": 103, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "line_num": 104, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "value_start": 9, "value_end": 73, "entropy": 5.13266 }, { "line": "#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "line_num": 105, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "value_start": 9, "value_end": 73, "entropy": 5.14798 }, { "line": "#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS", "line_num": 106, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aANEEoU1dXIzisq6pQ0J8AKS", "value_start": 9, "value_end": 33, "entropy": 4.4183 }, { "line": "#6 0.245 -----END PRIVATE KEY-----", "line_num": 107, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 9, "value_end": 34, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"rsa512.log\": \"\\\\r\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\r\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\r\\\\n#5 DONE 0.3s\\\\r\\\\n\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.docker.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----", "value_start": 102, "value_end": 749, "entropy": 5.8742 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"rsa512.log\": \"\\\\r\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\r\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\r\\\\n#5 DONE 0.3s\\\\r\\\\n\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.docker.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n", "value_start": 144, "value_end": 214, "entropy": 4.56642 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "line_num": 2, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "value_start": 0, "value_end": 64, "entropy": 4.72268 }, { "line": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "line_num": 3, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "value_start": 0, "value_end": 64, "entropy": 5.12852 }, { "line": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "line_num": 4, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "value_start": 0, "value_end": 56, "entropy": 5.24468 }, { "line": "-----END PRIVATE KEY-----", "line_num": 5, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": "ecdsaPrivateKey", "variable_start": 6, "variable_end": 21, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 25, "value_end": 55, "entropy": 3.30775 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 25, "value_end": 55, "entropy": 3.30775 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "line_num": 2, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "value_start": 0, "value_end": 64, "entropy": 4.64072 }, { "line": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "line_num": 3, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "value_start": 0, "value_end": 64, "entropy": 5.22641 }, { "line": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "line_num": 4, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "value_start": 0, "value_end": 56, "entropy": 5.11058 }, { "line": "-----END EC PRIVATE KEY-----`", "line_num": 5, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END EC PRIVATE KEY-----", "value_start": 0, "value_end": 28, "entropy": 3.16542 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " PRIVATE_KEY = \"-----BEGIN RSA PRIVATE KEY-----\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 19, "value_end": 50, "entropy": 3.38229 }, { "line": " + \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n", "value_start": 10, "value_end": 74, "entropy": 4.53081 }, { "line": " + \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp", "value_start": 11, "value_end": 75, "entropy": 5.25352 }, { "line": " + \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP", "value_start": 13, "value_end": 77, "entropy": 5.09727 }, { "line": " + \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI", "value_start": 11, "value_end": 75, "entropy": 5.10907 }, { "line": " + \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5", "value_start": 9, "value_end": 73, "entropy": 5.0629 }, { "line": " + \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR", "value_start": 10, "value_end": 74, "entropy": 5.10907 }, { "line": " + \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\n\"", "line_num": 10, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0", "value_start": 11, "value_end": 75, "entropy": 5.15211 }, { "line": " + \"GeGaqMojMT7//g==\\n\"", "line_num": 11, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GeGaqMojMT7//g==", "value_start": 10, "value_end": 26, "entropy": 3.5 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\n\";", "line_num": 12, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 9, "value_end": 38, "entropy": 3.24663 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " PRIVATE_KEY = \"-----BEGIN RSA PRIVATE KEY-----\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": "PRIVATE_KEY", "variable_start": 4, "variable_end": 15, "value": "-----BEGIN RSA PRIVATE KEY-----\\n", "value_start": 19, "value_end": 52, "entropy": 3.56776 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 16, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 6, "value_end": 33, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 17, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 18, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 19, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 20, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 21, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 22, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 23, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 24, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 25, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 20, "value_end": 47, "entropy": 3.20029 }, { "line": "2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "line_num": 3, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "value_start": 20, "value_end": 84, "entropy": 4.67767 }, { "line": "2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "line_num": 4, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "value_start": 20, "value_end": 84, "entropy": 5.06602 }, { "line": "2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "line_num": 5, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "line_num": 6, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "line_num": 7, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "value_start": 20, "value_end": 84, "entropy": 5.27298 }, { "line": "2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "line_num": 8, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "value_start": 20, "value_end": 84, "entropy": 5.4375 }, { "line": "2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "line_num": 9, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "line_num": 10, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "value_start": 20, "value_end": 84, "entropy": 5.2382 }, { "line": "2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "line_num": 11, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "value_start": 20, "value_end": 84, "entropy": 5.27711 }, { "line": "2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "line_num": 12, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "line_num": 13, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "value_start": 20, "value_end": 84, "entropy": 5.09571 }, { "line": "2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "line_num": 14, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "value_start": 20, "value_end": 84, "entropy": 5.34375 }, { "line": "2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "line_num": 15, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "value_start": 20, "value_end": 84, "entropy": 5.14384 }, { "line": "2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "line_num": 16, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "value_start": 20, "value_end": 84, "entropy": 5.22993 }, { "line": "2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "line_num": 17, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "line_num": 18, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "value_start": 20, "value_end": 84, "entropy": 4.86869 }, { "line": "2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "line_num": 19, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "value_start": 20, "value_end": 84, "entropy": 5.35907 }, { "line": "2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "line_num": 20, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "value_start": 20, "value_end": 84, "entropy": 5.24173 }, { "line": "2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "line_num": 21, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "value_start": 20, "value_end": 84, "entropy": 5.00352 }, { "line": "2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "line_num": 22, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "line_num": 23, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "line_num": 24, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "line_num": 25, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "value_start": 20, "value_end": 84, "entropy": 4.95282 }, { "line": "2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "line_num": 26, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "value_start": 20, "value_end": 84, "entropy": 5.05836 }, { "line": "2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "line_num": 27, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "line_num": 28, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "line_num": 29, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "value_start": 20, "value_end": 84, "entropy": 5.13462 }, { "line": "2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "line_num": 30, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "line_num": 31, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "line_num": 32, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "value_start": 20, "value_end": 84, "entropy": 5.04243 }, { "line": "2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "line_num": 33, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "line_num": 34, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "value_start": 20, "value_end": 84, "entropy": 4.84727 }, { "line": "2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "line_num": 35, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "line_num": 36, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "line_num": 37, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "value_start": 20, "value_end": 84, "entropy": 5.13618 }, { "line": "2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "line_num": 38, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "value_start": 20, "value_end": 84, "entropy": 5.04657 }, { "line": "2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "line_num": 39, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "value_start": 20, "value_end": 84, "entropy": 5.10141 }, { "line": "2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "line_num": 40, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "value_start": 20, "value_end": 84, "entropy": 5.11673 }, { "line": "2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "line_num": 41, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "line_num": 42, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "line_num": 43, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "value_start": 20, "value_end": 84, "entropy": 5.21461 }, { "line": "2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "line_num": 44, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "line_num": 45, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "value_start": 20, "value_end": 84, "entropy": 5.02752 }, { "line": "2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "line_num": 46, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "line_num": 47, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "value_start": 20, "value_end": 84, "entropy": 5.25 }, { "line": "2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "line_num": 48, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "value_start": 20, "value_end": 84, "entropy": 5.12852 }, { "line": "2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "line_num": 49, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "value_start": 20, "value_end": 84, "entropy": 5.12283 }, { "line": "2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "line_num": 50, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "value_start": 20, "value_end": 84, "entropy": 5.12696 }, { "line": "2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "line_num": 51, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "line_num": 52, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "line_num": 53, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "line_num": 54, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "value_start": 20, "value_end": 84, "entropy": 4.94712 }, { "line": "2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "line_num": 55, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "line_num": 56, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "line_num": 57, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "value_start": 20, "value_end": 84, "entropy": 4.98251 }, { "line": "2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "line_num": 58, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "value_start": 20, "value_end": 84, "entropy": 5.19102 }, { "line": "2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "line_num": 59, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "line_num": 60, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "value_start": 20, "value_end": 84, "entropy": 5.02711 }, { "line": "2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "line_num": 61, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "value_start": 20, "value_end": 84, "entropy": 5.15211 }, { "line": "2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "line_num": 62, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "value_start": 20, "value_end": 84, "entropy": 5.09727 }, { "line": "2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "line_num": 63, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "value_start": 20, "value_end": 84, "entropy": 5.25352 }, { "line": "2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "line_num": 64, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "line_num": 65, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "line_num": 66, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "line_num": 67, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "value_start": 20, "value_end": 84, "entropy": 5.03477 }, { "line": "2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "line_num": 68, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "value_start": 20, "value_end": 84, "entropy": 4.99173 }, { "line": "2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "line_num": 69, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "line_num": 70, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "value_start": 20, "value_end": 84, "entropy": 5.21048 }, { "line": "2026-04-26 12:36:01 qwI=", "line_num": 71, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qwI=", "value_start": 20, "value_end": 24, "entropy": 2.0 }, { "line": "2026-04-26 12:36:01 -----END PRIVATE KEY-----", "line_num": 72, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 20, "value_end": 45, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----", "value_start": 157, "value_end": 6245, "entropy": 5.8771 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": "mlkem-privatekey.pem\\r\\n2026-04-26 12", "variable_start": 113, "variable_end": 150, "value": "36:01", "value_start": 151, "value_end": 156, "entropy": 2.32193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": "KEY-----\\r\\n2026-04-26 12", "variable_start": 176, "variable_end": 201, "value": "36:01", "value_start": 202, "value_end": 207, "entropy": 2.32193 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026", "value_start": 208, "value_end": 280, "entropy": 4.9007 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "line_num": 2, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "value_start": 0, "value_end": 64, "entropy": 4.67611 }, { "line": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "line_num": 3, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "value_start": 0, "value_end": 64, "entropy": 5.10493 }, { "line": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "line_num": 4, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "value_start": 0, "value_end": 64, "entropy": 5.21461 }, { "line": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "line_num": 5, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "value_start": 0, "value_end": 64, "entropy": 4.97641 }, { "line": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "line_num": 6, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "value_start": 0, "value_end": 64, "entropy": 5.17923 }, { "line": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "line_num": 7, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "value_start": 0, "value_end": 64, "entropy": 5.25766 }, { "line": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "line_num": 8, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "value_start": 0, "value_end": 64, "entropy": 5.35141 }, { "line": "24n7nBfD3ZXv", "line_num": 9, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "24n7nBfD3ZXv", "value_start": 0, "value_end": 12, "entropy": 3.4183 }, { "line": "-----END PRIVATE KEY-----", "line_num": 10, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "Perplexity API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/perplexity", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 53, "entropy": 5.08142 } ] }, { "rule": "Perplexity API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/perplexity", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 53, "entropy": 4.89274 } ] }, { "rule": "Picatic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "line_num": 1, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "value_start": 0, "value_end": 44, "entropy": 4.86251 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "line_num": 2, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "value_start": 0, "value_end": 50, "entropy": 4.89366 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "line_num": 3, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "value_start": 0, "value_end": 53, "entropy": 5.07217 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "line_num": 4, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "value_start": 0, "value_end": 61, "entropy": 5.03312 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "line_num": 5, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "value_start": 0, "value_end": 64, "entropy": 5.04657 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "line_num": 1, "path": "./tests/samples/postman", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "value_start": 0, "value_end": 64, "entropy": 4.21698 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "line_num": 2, "path": "./tests/samples/postman", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "value_start": 0, "value_end": 31, "entropy": 4.3492 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81", "line_num": 10, "path": "./tests/samples/pretty.html", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0572bc9-7a3e-beef-cafe-9129474bcd81", "value_start": 41, "value_end": 77, "entropy": 3.84286 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 79, "path": "./tests/samples/pretty.html", "info": "", "variable": "token", "variable_start": 50, "variable_end": 55, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 56, "value_end": 102, "entropy": 4.79509 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "line_num": 80, "path": "./tests/samples/pretty.html", "info": "", "variable": "token", "variable_start": 42, "variable_end": 47, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 48, "value_end": 94, "entropy": 4.79509 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " 147# password: Jd3OnNy^564eD5_sd", "line_num": 147, "path": "./tests/samples/pretty.html", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "Jd3OnNy^564eD5_sd", "value_start": 22, "value_end": 39, "entropy": 3.85217 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " 151# a0ce4d19-7a3e-beef-cafe-9129474bcd81", "line_num": 151, "path": "./tests/samples/pretty.html", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0ce4d19-7a3e-beef-cafe-9129474bcd81", "value_start": 13, "value_end": 49, "entropy": 3.74259 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "pwd = \"cackle!\"", "line_num": 1, "path": "./tests/samples/pwd.gradle", "info": "", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "cackle!", "value_start": 7, "value_end": 14, "entropy": 2.52164 } ] }, { "rule": "PyPi API Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "line_num": 1, "path": "./tests/samples/pypi_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "value_start": 0, "value_end": 179, "entropy": 5.5923 } ] }, { "rule": "RubyGems API Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "line_num": 1, "path": "./tests/samples/rubygems", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "value_start": 0, "value_end": 57, "entropy": 4.06282 } ] }, { "rule": "RubyGems API Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rubygems_12345674dc42cb40d2c69cbb66e7a9b6c8d7820bb7c09b8e", "line_num": 2, "path": "./tests/samples/rubygems", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rubygems_12345674dc42cb40d2c69cbb66e7a9b6c8d7820bb7c09b8e", "value_start": 0, "value_end": 57, "entropy": 4.09791 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "f_org_id 00Dee00000000000A5 00D0A53429897F6EA5", "line_num": 1, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00D0A53429897F6EA5", "value_start": 28, "value_end": 46, "entropy": 3.57243 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "f_org_id 00Dee00000000000A5 00D0A53429897F6EA5", "line_num": 1, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00Dee00000000000A5", "value_start": 9, "value_end": 27, "entropy": 1.38627 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DFT5H59PHLAN0IA", "value_start": 9, "value_end": 26, "entropy": 3.45482 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DG9UE38D6ELk5l", "value_start": 27, "value_end": 43, "entropy": 3.625 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00Dh68fkeHGbDk92k", "value_start": 61, "value_end": 78, "entropy": 3.57247 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DyXD47kKDny11j", "value_start": 44, "value_end": 60, "entropy": 3.32782 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "line_num": 3, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "value_start": 8, "value_end": 120, "entropy": 5.19811 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "line_num": 4, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "value_start": 13, "value_end": 98, "entropy": 5.45622 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var Himalayan_salt = \"$hal$1te$TnnGdhednJsdQ5nfetwZ\";", "line_num": 1, "path": "./tests/samples/salt.hs", "info": "", "variable": "Himalayan_salt", "variable_start": 4, "variable_end": 18, "value": "$hal$1te$TnnGdhednJsdQ5nfetwZ", "value_start": 22, "value_end": 51, "entropy": 3.9523 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "salt1 = b\"\\x23!\\xae2389x&543@\"", "line_num": 1, "path": "./tests/samples/salt.py", "info": "", "variable": "salt1", "variable_start": 0, "variable_end": 5, "value": "\\x23!\\xae2389x&543@", "value_start": 10, "value_end": 29, "entropy": 3.53689 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "salt2 = r\"\"\"\\0x12\\0x3s\"\"\"", "line_num": 2, "path": "./tests/samples/salt.py", "info": "", "variable": "salt2", "variable_start": 0, "variable_end": 5, "value": "\\0x12\\0x3s", "value_start": 12, "value_end": 22, "entropy": 2.72193 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "salt3 = u\"\\u0020827634876\"", "line_num": 3, "path": "./tests/samples/salt.py", "info": "", "variable": "salt3", "variable_start": 0, "variable_end": 5, "value": "\\u0020827634876", "value_start": 10, "value_end": 25, "entropy": 3.05656 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "salt4 = {\"salt5\": \"my124%#$@s\\x04clt\\0\"}", "line_num": 4, "path": "./tests/samples/salt.py", "info": "", "variable": "salt4", "variable_start": 0, "variable_end": 5, "value": "salt5", "value_start": 10, "value_end": 15, "entropy": 2.32193 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "json_escaped = \"{\\\\\\\"salt8\\\\\\\":\\\\\\\"4b9a6d8b638eb0c6\\\\\\\"}\"", "line_num": 5, "path": "./tests/samples/salt.py", "info": "", "variable": "salt8", "variable_start": 21, "variable_end": 26, "value": "4b9a6d8b638eb0c6", "value_start": 35, "value_end": 51, "entropy": 3.28064 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "line_num": 2, "path": "./tests/samples/sample.h", "info": "", "variable": "AESKEY", "variable_start": 8, "variable_end": 14, "value": "0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "value_start": 16, "value_end": 83, "entropy": 3.24263 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "TokenRequest", "line_num": 9, "path": "./tests/samples/sample.html", "info": "", "variable": "token", "variable_start": 28, "variable_end": 33, "value": "g1re0g1T0keN3zWx", "value_start": 40, "value_end": 56, "entropy": 3.5 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 11, "path": "./tests/samples/sample.html", "info": "", "variable": "Password", "variable_start": 24, "variable_end": 32, "value": "", "value_start": 33, "value_end": 33, "entropy": 0.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " placeholder=\"Your password: "g1re0g1Pa5$w0Rd"\"", "line_num": 16, "path": "./tests/samples/sample.html", "info": "", "variable": "Your password", "variable_start": 17, "variable_end": 30, "value": "g1re0g1Pa5$w0Rd", "value_start": 38, "value_end": 53, "entropy": 3.50689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 21, "path": "./tests/samples/sample.html", "info": "", "variable": "password", "variable_start": 30, "variable_end": 38, "value": "g1re0g2Pa5$w0Rd", "value_start": 39, "value_end": 54, "entropy": 3.64022 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = \\", "line_num": 8, "path": "./tests/samples/sample.py", "info": "", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "", "value_start": 28, "value_end": 28, "entropy": 0.0 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = \\", "line_num": 8, "path": "./tests/samples/sample.py", "info": "", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "", "value_start": 28, "value_end": 28, "entropy": 0.0 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = \\", "line_num": 8, "path": "./tests/samples/sample.py", "info": "", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "", "value_start": 28, "value_end": 28, "entropy": 0.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET_CREDENTIAL_API_KEY = \\", "line_num": 8, "path": "./tests/samples/sample.py", "info": "", "variable": "SECRET_CREDENTIAL_API_KEY", "variable_start": 0, "variable_end": 25, "value": "", "value_start": 28, "value_end": 28, "entropy": 0.0 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH = (\"Basic \"", "line_num": 11, "path": "./tests/samples/sample.py", "info": "", "variable": "AUTH", "variable_start": 0, "variable_end": 4, "value": "", "value_start": 15, "value_end": 15, "entropy": 0.0 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_CREDENTIAL_SECRET = \\", "line_num": 14, "path": "./tests/samples/sample.py", "info": "", "variable": "AUTH_CREDENTIAL_SECRET", "variable_start": 0, "variable_end": 22, "value": "", "value_start": 25, "value_end": 25, "entropy": 0.0 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_CREDENTIAL_SECRET = \\", "line_num": 14, "path": "./tests/samples/sample.py", "info": "", "variable": "AUTH_CREDENTIAL_SECRET", "variable_start": 0, "variable_end": 22, "value": "", "value_start": 25, "value_end": 25, "entropy": 0.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_CREDENTIAL_SECRET = \\", "line_num": 14, "path": "./tests/samples/sample.py", "info": "", "variable": "AUTH_CREDENTIAL_SECRET", "variable_start": 0, "variable_end": 22, "value": "", "value_start": 25, "value_end": 25, "entropy": 0.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "API_SECRET_KEY = \\", "line_num": 17, "path": "./tests/samples/sample.py", "info": "", "variable": "API_SECRET_KEY", "variable_start": 0, "variable_end": 14, "value": "", "value_start": 17, "value_end": 17, "entropy": 0.0 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "API_SECRET_KEY = \\", "line_num": 17, "path": "./tests/samples/sample.py", "info": "", "variable": "API_SECRET_KEY", "variable_start": 0, "variable_end": 14, "value": "", "value_start": 17, "value_end": 17, "entropy": 0.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "API_SECRET_KEY = \\", "line_num": 17, "path": "./tests/samples/sample.py", "info": "", "variable": "API_SECRET_KEY", "variable_start": 0, "variable_end": 14, "value": "", "value_start": 17, "value_end": 17, "entropy": 0.0 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_SECRET_NONCE = \\", "line_num": 20, "path": "./tests/samples/sample.py", "info": "", "variable": "AUTH_SECRET_NONCE", "variable_start": 0, "variable_end": 17, "value": "", "value_start": 20, "value_end": 20, "entropy": 0.0 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_SECRET_NONCE = \\", "line_num": 20, "path": "./tests/samples/sample.py", "info": "", "variable": "AUTH_SECRET_NONCE", "variable_start": 0, "variable_end": 17, "value": "", "value_start": 20, "value_end": 20, "entropy": 0.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AUTH_SECRET_NONCE = \\", "line_num": 20, "path": "./tests/samples/sample.py", "info": "", "variable": "AUTH_SECRET_NONCE", "variable_start": 0, "variable_end": 17, "value": "", "value_start": 20, "value_end": 20, "entropy": 0.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PASSWORD = \\", "line_num": 23, "path": "./tests/samples/sample.py", "info": "", "variable": "PASSWORD", "variable_start": 0, "variable_end": 8, "value": "", "value_start": 11, "value_end": 11, "entropy": 0.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SECRET = os.getenv( #", "line_num": 29, "path": "./tests/samples/sample.py", "info": "", "variable": "SECRET", "variable_start": 0, "variable_end": 6, "value": "os.getenv(", "value_start": 9, "value_end": 19, "entropy": 3.12193 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "X_Auth_Tokens = [", "line_num": 33, "path": "./tests/samples/sample.py", "info": "", "variable": "X_Auth_Tokens", "variable_start": 0, "variable_end": 13, "value": "", "value_start": 16, "value_end": 16, "entropy": 0.0 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "X_Auth_Tokens = [", "line_num": 33, "path": "./tests/samples/sample.py", "info": "", "variable": "X_Auth_Tokens", "variable_start": 0, "variable_end": 13, "value": "", "value_start": 16, "value_end": 16, "entropy": 0.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " -H 'postman-token: }{\\loch\\ul\\ulc0\\loch", "line_num": 24, "path": "./tests/samples/sample.rtf", "info": "", "variable": "postman-token", "variable_start": 5, "variable_end": 18, "value": "}{\\loch\\ul\\ulc0\\loch", "value_start": 20, "value_end": 40, "entropy": 2.98418 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36}{\\loch", "line_num": 25, "path": "./tests/samples/sample.rtf", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36", "value_start": 0, "value_end": 36, "entropy": 3.84286 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "%define bld %(if [[ \"%{password}\" =~ \"himmelsrand\" ]]; then echo \"y\"; else echo \"n\"; fi)", "line_num": 1, "path": "./tests/samples/sample.spec", "info": "", "variable": "%{password}", "variable_start": 21, "variable_end": 32, "value": "himmelsrand", "value_start": 38, "value_end": 49, "entropy": 3.27761 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "line_num": 2, "path": "./tests/samples/sample.spec", "info": "", "variable": "token", "variable_start": 8, "variable_end": 13, "value": "4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "value_start": 14, "value_end": 78, "entropy": 3.73644 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " AKIAGIREOGIAWSKEY321==", "line_num": 3, "path": "./tests/samples/sample.tm7", "info": "", "variable": "AKIAGIREOGIAWSKEY321", "variable_start": 11, "variable_end": 31, "value": "", "value_start": 33, "value_end": 33, "entropy": 0.0 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " AKIAGIREOGIAWSKEY321==", "line_num": 3, "path": "./tests/samples/sample.tm7", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 11, "value_end": 31, "entropy": 3.54644 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " 17205d79-dead-beef-a311-26312ad6ea36", "line_num": 4, "path": "./tests/samples/sample.tm7", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "17205d79-dead-beef-a311-26312ad6ea36", "value_start": 9, "value_end": 45, "entropy": 3.60702 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " May password:6Ew1ThY0u", "line_num": 5, "path": "./tests/samples/sample.tm7", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "6Ew1ThY0u", "value_start": 24, "value_end": 33, "entropy": 3.16993 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "apiVersion: bitnami.com/v1alpha1", "line_num": 2, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "apiVersion", "variable_start": 0, "variable_end": 10, "value": "bitnami.com/v1alpha1", "value_start": 12, "value_end": 32, "entropy": 3.78418 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " API: AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d===", "line_num": 9, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "API", "variable_start": 4, "variable_end": 7, "value": "AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d===", "value_start": 9, "value_end": 713, "entropy": 5.94887 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " AUTH: AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p=", "line_num": 10, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "AUTH", "variable_start": 4, "variable_end": 8, "value": "AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p=", "value_start": 10, "value_end": 735, "entropy": 5.94525 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " CREDENTIAL: AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI=", "line_num": 11, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "CREDENTIAL", "variable_start": 4, "variable_end": 14, "value": "AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI=", "value_start": 16, "value_end": 756, "entropy": 5.9484 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " KEY: AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU==", "line_num": 12, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "KEY", "variable_start": 4, "variable_end": 7, "value": "AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU==", "value_start": 9, "value_end": 753, "entropy": 5.96239 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "line_num": 13, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "__NONCE", "variable_start": 4, "variable_end": 11, "value": "AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "value_start": 13, "value_end": 394, "entropy": 5.81513 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " PASSWORD: AQABhq+jhk0OUxVhswdFEm9IL/8utYAozLhaQ4wumxrpKkH1g0ic/ppWtf2EKuXEzYgQeDHWRSLYEEKY6tGMaYNt2DK75DhrilsRd0p+OVcVVei/v18I0ZNRbBqhApiu2C7jAIBd4wtOXysSY0P/gq3dWJNywvybZ+qj+L6NBsVvwghSQex3ZfO3gQYrIqKbehSBvhBPxAeuYGdEpHyI0eeIBxTH2cu+URfUcA06czLh8bkvBXHSGLgi5IWca1W2V0B1/x6tMPVR19W06CzCu8OSIiehHzzgimBkMoZHC8fJQvuHwePWEnwvWOEVxqcZmSoUqLL1qS6jVtzIViqSbGDay9wyXyoG96/YELVe3OEzAIjtQieZG65JH9A5RF07EB1Kev+w", "line_num": 14, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "PASSWORD", "variable_start": 4, "variable_end": 12, "value": "AQABhq+jhk0OUxVhswdFEm9IL/8utYAozLhaQ4wumxrpKkH1g0ic/ppWtf2EKuXEzYgQeDHWRSLYEEKY6tGMaYNt2DK75DhrilsRd0p+OVcVVei/v18I0ZNRbBqhApiu2C7jAIBd4wtOXysSY0P/gq3dWJNywvybZ+qj+L6NBsVvwghSQex3ZfO3gQYrIqKbehSBvhBPxAeuYGdEpHyI0eeIBxTH2cu+URfUcA06czLh8bkvBXHSGLgi5IWca1W2V0B1/x6tMPVR19W06CzCu8OSIiehHzzgimBkMoZHC8fJQvuHwePWEnwvWOEVxqcZmSoUqLL1qS6jVtzIViqSbGDay9wyXyoG96/YELVe3OEzAIjtQieZG65JH9A5RF07EB1Kev+w", "value_start": 14, "value_end": 406, "entropy": 5.84758 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " SALT: AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0", "line_num": 15, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "SALT", "variable_start": 4, "variable_end": 8, "value": "AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0", "value_start": 10, "value_end": 389, "entropy": 5.85103 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " SECRET: AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw==", "line_num": 16, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "SECRET", "variable_start": 4, "variable_end": 10, "value": "AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw==", "value_start": 12, "value_end": 395, "entropy": 5.90879 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " TOKEN: AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA=", "line_num": 17, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "TOKEN", "variable_start": 4, "variable_end": 9, "value": "AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA=", "value_start": 11, "value_end": 394, "entropy": 5.89729 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"key\": \"keys\",", "line_num": 25, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "keys", "value_start": 18, "value_end": 22, "entropy": 2.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "if string(secret) == \"cackle!\" {", "line_num": 1, "path": "./tests/samples/secret.go", "info": "", "variable": "secret)", "variable_start": 10, "variable_end": 17, "value": "cackle!", "value_start": 22, "value_end": 29, "entropy": 2.52164 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201},", "line_num": 3, "path": "./tests/samples/secret.go", "info": "", "variable": "Secret", "variable_start": 8, "variable_end": 14, "value": "333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201", "value_start": 23, "value_end": 99, "entropy": 3.10882 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 14, "value_end": 49, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 8, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 9, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 10, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 11, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 12, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/secret.go", "info": "", "variable": "SECRET", "variable_start": 4, "variable_end": 10, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 14, "value_end": 49, "entropy": 3.58716 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", "line_num": 17, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_1", "variable_start": 4, "variable_end": 34, "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", "line_num": 18, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_2", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", "value_start": 36, "value_end": 76, "entropy": 4.78418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", "line_num": 19, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_3", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", "line_num": 20, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path__", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", "value_start": 36, "value_end": 76, "entropy": 4.85306 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "LEGACY_GITHUB_SECRET = \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\"", "line_num": 1, "path": "./tests/samples/secret.groovy", "info": "", "variable": "LEGACY_GITHUB_SECRET", "variable_start": 0, "variable_end": 20, "value": "fa87409ad3a4589fd279c501b3d2e174855ee9f4", "value_start": 24, "value_end": 64, "entropy": 3.80869 } ] }, { "rule": "SendGrid API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SG.gireogigireogigi.gireogigireogigi", "line_num": 1, "path": "./tests/samples/sendgrid_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SG.gireogigireogigi.gireogigireogigi", "value_start": 0, "value_end": 36, "entropy": 2.60219 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "line_num": 1, "path": "./tests/samples/sentry", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "value_start": 7, "value_end": 179, "entropy": 5.50522 } ] }, { "rule": "Sentry Organization Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "line_num": 1, "path": "./tests/samples/sentry", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "value_start": 0, "value_end": 179, "entropy": 5.53873 } ] }, { "rule": "Sentry User Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/sentry", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 71, "entropy": 4.14384 } ] }, { "rule": "Shopify Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"shopyfy_k\": \"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\",", "line_num": 1, "path": "./tests/samples/shopify_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 18, "value_end": 56, "entropy": 3.80396 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "line_num": 1, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "value_start": 0, "value_end": 97, "entropy": 4.32216 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "line_num": 2, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "value_start": 0, "value_end": 56, "entropy": 4.71996 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "line_num": 3, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "value_start": 0, "value_end": 171, "entropy": 4.93756 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "line_num": 4, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "value_start": 0, "value_end": 153, "entropy": 4.95538 } ] }, { "rule": "Slack Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"hook\": \"https://hooks.slack.com/services/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\",", "line_num": 1, "path": "./tests/samples/slack_webhook.template", "info": "", "variable": "hooks.slack.com/services", "variable_start": 21, "variable_end": 45, "value": "/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg", "value_start": 45, "value_end": 93, "entropy": 4.76184 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',", "line_num": 1, "path": "./tests/samples/sonarqube", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab", "value_start": 16, "value_end": 60, "entropy": 4.10151 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "line_num": 2, "path": "./tests/samples/sonarqube", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "value_start": 14, "value_end": 58, "entropy": 3.954 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SONAR_TOKEN=sqp_abcdef123455678908359f980be71580cd3da370", "line_num": 3, "path": "./tests/samples/sonarqube", "info": "", "variable": "SONAR_TOKEN", "variable_start": 0, "variable_end": 11, "value": "sqp_abcdef123455678908359f980be71580cd3da370", "value_start": 12, "value_end": 56, "entropy": 4.13523 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SONAR_TOKEN=sqp_abcdef123455678908359f980be71580cd3da370", "line_num": 3, "path": "./tests/samples/sonarqube", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sqp_abcdef123455678908359f980be71580cd3da370", "value_start": 12, "value_end": 56, "entropy": 4.13523 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';", "line_num": 1, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY", "variable_start": 0, "variable_end": 70, "value": "SqLpa5sW0rD", "value_start": 72, "value_end": 83, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "'create user name identified by 'SqLpa5sW0rD' --", "line_num": 2, "path": "./tests/samples/sql_password", "info": "", "variable": "create user name identified by", "variable_start": 1, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 3, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`", "line_num": 4, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'haproxy'@'%' IDENTIFIED BY", "variable_start": 2, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 5, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "expected_statement = \"\"\"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 6, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 24, "variable_end": 63, "value": "SqLpa5sW0rD", "value_start": 65, "value_end": 76, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER $TEST_USER_NAME WITH SUPERUSER LOGIN NOINHERIT PASSWORD '$TEST_USER_PASS' CREATEROLE; -- todo filter", "line_num": 7, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER $TEST_USER_NAME WITH SUPERUSER LOGIN NOINHERIT PASSWORD", "variable_start": 0, "variable_end": 67, "value": "$TEST_USER_PASS", "value_start": 69, "value_end": 84, "entropy": 2.97356 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 8, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 0, "variable_end": 39, "value": "SqLpa5sW0rD", "value_start": 41, "value_end": 52, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "", "variable": "PASSWORD", "variable_start": 26, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 36, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\"", "line_num": 10, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER ROLE postgres PASSWORD", "variable_start": 0, "variable_end": 28, "value": "SqLpa5sW0rD", "value_start": 30, "value_end": 41, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 11, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER username WITH PASSWORD", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "", "variable": "PASSWORD", "variable_start": 27, "variable_end": 35, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 37, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;", "line_num": 13, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER chuck WITH PASSWORD", "variable_start": 0, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;", "line_num": 14, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD", "variable_start": 0, "variable_end": 45, "value": "SqLpa5sW0rD", "value_start": 47, "value_end": 58, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 15, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER myuser WITH PASSWORD", "variable_start": 0, "variable_end": 32, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 16, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER username WITH PASSWORD", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 36, "value_end": 47, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 17, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 47, "value": "SqLpa5sW0rD", "value_start": 49, "value_end": 60, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.10.10.%' identified by 'SqLpa5sW0rD';", "line_num": 18, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'super_user'@'10.10.10.%' identified by", "variable_start": 0, "variable_end": 50, "value": "SqLpa5sW0rD", "value_start": 52, "value_end": 63, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 19, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 20, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 21, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 48, "value": "SqLpa5sW0rD", "value_start": 50, "value_end": 61, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "mysql -u root -pdbadmin -e \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\"\u2013 ", "line_num": 22, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY", "variable_start": 28, "variable_end": 77, "value": "SqLpa5sW0rD", "value_start": 79, "value_end": 90, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "-c \"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\"", "line_num": 23, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE scram_test login password", "variable_start": 4, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;", "line_num": 24, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE app_admin WITH LOGIN PASSWORD", "variable_start": 0, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 42, "value_end": 53, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';", "line_num": 25, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE flask_admin_geo LOGIN PASSWORD", "variable_start": 0, "variable_end": 42, "value": "SqLpa5sW0rD", "value_start": 44, "value_end": 55, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "create role forum_example_graph_demo login password 'SqLpa5sW0rD';", "line_num": 26, "path": "./tests/samples/sql_password", "info": "", "variable": "create role forum_example_graph_demo login password", "variable_start": 0, "variable_end": 51, "value": "SqLpa5sW0rD", "value_start": 53, "value_end": 64, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "create role forum_example_graph login password 'SqLpa5sW0rD';", "line_num": 27, "path": "./tests/samples/sql_password", "info": "", "variable": "create role forum_example_graph login password", "variable_start": 0, "variable_end": 46, "value": "SqLpa5sW0rD", "value_start": 48, "value_end": 59, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');", "line_num": 28, "path": "./tests/samples/sql_password", "info": "", "variable": "SET PASSWORD FOR 'username'@'localhost' = PASSWORD", "variable_start": 0, "variable_end": 50, "value": "SqLpa5sW0rD", "value_start": 52, "value_end": 63, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');", "line_num": 28, "path": "./tests/samples/sql_password", "info": "", "variable": "PASSWORD FOR", "variable_start": 4, "variable_end": 16, "value": "username", "value_start": 18, "value_end": 26, "entropy": 2.75 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "insert into mysql.user values(PASSWORD('SqLpa5sW0rD') );", "line_num": 29, "path": "./tests/samples/sql_password", "info": "", "variable": "insert into mysql.user values(PASSWORD", "variable_start": 0, "variable_end": 38, "value": "SqLpa5sW0rD", "value_start": 40, "value_end": 51, "entropy": 3.45943 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';", "line_num": 30, "path": "./tests/samples/sql_password", "info": "", "variable": "authentication_string", "variable_start": 22, "variable_end": 43, "value": "SqLpa5sW0rD", "value_start": 57, "value_end": 68, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';", "line_num": 30, "path": "./tests/samples/sql_password", "info": "", "variable": "UPDATE mysql.user SET authentication_string = PASSWORD", "variable_start": 0, "variable_end": 54, "value": "SqLpa5sW0rD", "value_start": 57, "value_end": 68, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1", "line_num": 31, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS", "variable_start": 0, "variable_end": 70, "value": "*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409", "value_start": 72, "value_end": 113, "entropy": 3.78769 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\; >>tmp.sql;'", "line_num": 32, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER typeorm_mg IDENTIFIED BY", "variable_start": 12, "variable_end": 48, "value": "SqLpa5sW0rD\\;", "value_start": 49, "value_end": 62, "entropy": 3.70044 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.10.%' PASSWORD EXPIRE INTERVAL 90 DAY;", "line_num": 34, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'super_user'@'10.10.%' PASSWORD", "variable_start": 0, "variable_end": 42, "value": "EXPIRE", "value_start": 43, "value_end": 49, "entropy": 2.25163 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.1.%' PASSWORD HISTORY 1;", "line_num": 35, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'super_user'@'10.1.%' PASSWORD", "variable_start": 0, "variable_end": 41, "value": "HISTORY", "value_start": 42, "value_end": 49, "entropy": 2.80735 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;", "line_num": 36, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'username'@'%' PASSWORD", "variable_start": 0, "variable_end": 34, "value": "EXPIRE", "value_start": 35, "value_end": 41, "entropy": 2.25163 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "alter user \"bob\"@\"localhost\" identified with sha256_password by '';", "line_num": 38, "path": "./tests/samples/sql_password", "info": "", "variable": "alter user \"bob\"@\"localhost\" identified with sha256_password by", "variable_start": 0, "variable_end": 63, "value": "", "value_start": 65, "value_end": 81, "entropy": 3.625 } ] }, { "rule": "Square Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"SQT\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",", "line_num": 1, "path": "./tests/samples/square_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF", "value_start": 12, "value_end": 76, "entropy": 4.66018 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sq0atp-GIREOGICR0CKLE12W45A78", "line_num": 1, "path": "./tests/samples/square_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0atp-GIREOGICR0CKLE12W45A78", "value_start": 0, "value_end": 29, "entropy": 4.44419 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "20241204_112356 Colored line: \"\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\u001b[0m\";", "line_num": 1, "path": "./tests/samples/square_oauth_secret", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI", "value_start": 36, "value_end": 86, "entropy": 4.75856 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "line_num": 3, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "line_num": 4, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "line_num": 5, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "value_start": 0, "value_end": 32, "entropy": 4.53891 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "line_num": 6, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "value_start": 0, "value_end": 107, "entropy": 5.24966 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "line_num": 7, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "value_start": 0, "value_end": 107, "entropy": 5.44092 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 8, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 107, "entropy": 5.50064 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "line_num": 9, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "value_start": 0, "value_end": 38, "entropy": 4.47135 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "line_num": 10, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "value_start": 0, "value_end": 38, "entropy": 4.82687 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"info\": \"Structure can be combined if keys exists: key - value\",", "line_num": 2, "path": "./tests/samples/struct.json", "info": "", "variable": "Structure can be combined if keys exists", "variable_start": 13, "variable_end": 53, "value": "", "value_start": 55, "value_end": 55, "entropy": 0.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"key\": \"password\",", "line_num": 3, "path": "./tests/samples/struct.json", "info": "", "variable": "key", "variable_start": 5, "variable_end": 8, "value": "password", "value_start": 12, "value_end": 20, "entropy": 2.75 } ] }, { "rule": "Telegram Bot API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "line_num": 1, "path": "./tests/samples/telegram_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "value_start": 0, "value_end": 45, "entropy": 4.94174 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", "line_num": 17, "path": "./tests/samples/test.eml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", "value_start": 0, "value_end": 76, "entropy": 5.28235 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", "line_num": 17, "path": "./tests/samples/test.eml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", "value_start": 0, "value_end": 76, "entropy": 5.28235 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " Password:", "line_num": 82, "path": "./tests/samples/test.html", "info": "", "variable": "Password", "variable_start": 33, "variable_end": 41, "value": "", "value_start": 42, "value_end": 42, "entropy": 0.0 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " xml capability", "line_num": 111, "path": "./tests/samples/test.html", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACRvAWiwzR8rcXFsLiUH13ybj0tdEaNOOyOCeLr1Pimz063torSJYoIkhjXokahQPwFbHK3fcsQTyWsySxOY5EO5WU4INJpNWY4ycGpRep634M8YJ4gg8ichL", "value_start": 12742, "value_end": 12865, "entropy": 5.54188 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 18, "path": "./tests/samples/test2.eml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 18, "path": "./tests/samples/test2.eml", "info": "", "variable": "token in text", "variable_start": 0, "variable_end": 13, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 18, "path": "./tests/samples/test2.eml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "line_num": 1, "path": "./tests/samples/together", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "value_start": 0, "value_end": 50, "entropy": 5.13366 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "line_num": 2, "path": "./tests/samples/together", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "value_start": 0, "value_end": 50, "entropy": 5.16386 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrMx3oIwIOhhIZxxxxxxxxxx", "line_num": 3, "path": "./tests/samples/together", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrMx3oIwIOhhIZxxxxxxxxxx", "value_start": 0, "value_end": 50, "entropy": 4.56278 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "gi_reo_gi_token = \"G1Re06G1BdgNseiJDN21Z094M\"", "line_num": 1, "path": "./tests/samples/token.toml", "info": "", "variable": "gi_reo_gi_token", "variable_start": 0, "variable_end": 15, "value": "G1Re06G1BdgNseiJDN21Z094M", "value_start": 19, "value_end": 44, "entropy": 4.13366 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo", "line_num": 2, "path": "./tests/samples/token.toml", "info": "", "variable": "DemoToken", "variable_start": 8, "variable_end": 17, "value": "Nxs094M3ed2s1Re0F4M3ed2GZ8M=", "value_start": 19, "value_end": 47, "entropy": 4.03915 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "tp_token_value=\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\"", "line_num": 4, "path": "./tests/samples/token.toml", "info": "", "variable": "tp_token_value", "variable_start": 0, "variable_end": 14, "value": "b035d48j9X2dfjF0hb9sd8Guf5hWu2ia", "value_start": 16, "value_end": 48, "entropy": 4.22641 } ] }, { "rule": "Tavily API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # TP", "line_num": 1, "path": "./tests/samples/tvly", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.84432 } ] }, { "rule": "Tavily API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # FP", "line_num": 2, "path": "./tests/samples/tvly", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 41, "entropy": 4.86975 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AC123456E2A108CD72F648B1984C3B5A13", "line_num": 2, "path": "./tests/samples/twilio_credentials_n", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AC123456E2A108CD72F648B1984C3B5A13", "value_start": 0, "value_end": 34, "entropy": 3.8366 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SK4D2F64E2A108CD72F648B1984C3B5A13", "line_num": 1, "path": "./tests/samples/twilio_credentials_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SK4D2F64E2A108CD72F648B1984C3B5A13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AC4d2f64e2a108cd72f648b1984c3b5a13", "line_num": 2, "path": "./tests/samples/twilio_credentials_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AC4d2f64e2a108cd72f648b1984c3b5a13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');", "line_num": 1, "path": "./tests/samples/url_cred.js", "info": "", "variable": "dbconnection://", "variable_start": 32, "variable_end": 47, "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, "entropy": 3.58496 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", "line_num": 3, "path": "./tests/samples/url_cred.js", "info": "", "variable": "Credential", "variable_start": 38, "variable_end": 48, "value": "546DFS64N90P3AW7DX%2Fkeep%26cut", "value_start": 49, "value_end": 80, "entropy": 4.41372 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "// \"fp://no.host.real/any/path/to/nowhere/\",\"key\":\"f45VgF8jX79o@anydata.com\"", "line_num": 7, "path": "./tests/samples/url_cred.js", "info": "", "variable": "key", "variable_start": 45, "variable_end": 48, "value": "f45VgF8jX79o@anydata.com", "value_start": 51, "value_end": 75, "entropy": 4.30351 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "", "variable": "key", "variable_start": 36, "variable_end": 39, "value": "3487263-2384579834-234732875-345", "value_start": 40, "value_end": 72, "entropy": 2.97591 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "", "variable": "Credential", "variable_start": 6, "variable_end": 16, "value": "546DFS64N90P3AW7DX", "value_start": 17, "value_end": 35, "entropy": 3.83659 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", "line_num": 13, "path": "./tests/samples/url_cred.js", "info": "", "variable": "smtps://", "variable_start": 18, "variable_end": 26, "value": "FnD83JZs", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "@\"otpauth://host/port?set=VNMXQKAZFVOYOJCDNBIYXYIWX2&info=should_not_be_found_even_in_ml_threshold", "line_num": 16, "path": "./tests/samples/url_cred.js", "info": "", "variable": "otpauth", "variable_start": 2, "variable_end": 9, "value": "//host/port?set=VNMXQKAZFVOYOJCDNBIYXYIWX2", "value_start": 10, "value_end": 52, "entropy": 4.65376 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "url3d = \"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\";", "line_num": 19, "path": "./tests/samples/url_cred.js", "info": "", "variable": "token", "variable_start": 65, "variable_end": 70, "value": "h1d3Me4ch534d801sl3jdk", "value_start": 73, "value_end": 95, "entropy": 3.75444 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "if (password !== \"PaS5w0rD2#\"){", "line_num": 21, "path": "./tests/samples/url_cred.js", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "PaS5w0rD2#", "value_start": 18, "value_end": 28, "entropy": 3.32193 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"line\": \"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\"}", "line_num": 25, "path": "./tests/samples/url_cred.js", "info": "", "variable": "mongodb://", "variable_start": 15, "variable_end": 25, "value": "p4Dsr8b", "value_start": 34, "value_end": 41, "entropy": 2.80735 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", "line_num": 1, "path": "./tests/samples/uuid", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.58954 } ] }, { "rule": "Vercel Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "line_num": 1, "path": "./tests/samples/vercel", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "value_start": 0, "value_end": 60, "entropy": 5.23581 } ] }, { "rule": "Vercel Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "vcp_1234567fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6poEXAMPLE", "line_num": 2, "path": "./tests/samples/vercel", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vcp_1234567fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6poEXAMPLE", "value_start": 0, "value_end": 60, "entropy": 5.31506 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx123456dead1beef0", "line_num": 1, "path": "./tests/samples/wechat_f", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx123456dead1beef0", "value_start": 0, "value_end": 18, "entropy": 3.68354 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wxffffff0139347361", "line_num": 2, "path": "./tests/samples/wechat_f", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wxffffff0139347361", "value_start": 0, "value_end": 18, "entropy": 2.933 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wxfedcba1927157565", "line_num": 3, "path": "./tests/samples/wechat_f", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wxfedcba1927157565", "value_start": 0, "value_end": 18, "entropy": 3.68354 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wxe191bc54fc7d529a", "line_num": 1, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wxe191bc54fc7d529a", "value_start": 0, "value_end": 18, "entropy": 3.72548 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx2274a335e18222d6", "line_num": 2, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx2274a335e18222d6", "value_start": 0, "value_end": 18, "entropy": 3.41383 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx4d82d07e3eb5ba84", "line_num": 3, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx4d82d07e3eb5ba84", "value_start": 0, "value_end": 18, "entropy": 3.61437 } ] }, { "rule": "X AI API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "line_num": 1, "path": "./tests/samples/xai", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "value_start": 0, "value_end": 84, "entropy": 5.35637 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\n DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\n 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\n AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\n BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\n caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\n EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "line_num": 3, "path": "./tests/samples/xml_data.xml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\n DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\n 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\n AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\n BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\n caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\n EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "value_start": 7, "value_end": 485, "entropy": 5.75738 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "token : \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\"", "line_num": 12, "path": "./tests/samples/xml_data.xml", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "value_start": 9, "value_end": 116, "entropy": 5.12458 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "line_num": 16, "path": "./tests/samples/xml_data.xml", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn", "value_start": 8, "value_end": 58, "entropy": 4.83327 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password : cackle!", "line_num": 5, "path": "./tests/samples/xml_password.xml", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 11, "value_end": 18, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password : peace_for_ukraine", "line_num": 9, "path": "./tests/samples/xml_password.xml", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "peace_for_ukraine", "value_start": 11, "value_end": 28, "entropy": 3.45482 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "password : Password for authorization\n BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", "line_num": 11, "path": "./tests/samples/xml_password.xml", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Password", "value_start": 11, "value_end": 19, "entropy": 2.75 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "password : Password for authorization\n BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", "line_num": 11, "path": "./tests/samples/xml_password.xml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d59-fa7e-beef-cafe-9129474bcd81", "value_start": 52, "value_end": 88, "entropy": 3.66606 } ] } ] ================================================ FILE: tests/data/no_ml.json ================================================ [ { "rule": "1Password Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "line_num": 1, "path": "./tests/samples/1password", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "value_start": 0, "value_end": 656, "entropy": 5.94326 } ] }, { "rule": "BASE64 encoded PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==", "line_num": 1, "path": "./tests/samples/LS0t_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg", "value_start": 0, "value_end": 3078, "entropy": 5.49785 } ] }, { "rule": "Akamai Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "line_num": 1, "path": "./tests/samples/akamai", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "value_start": 3, "value_end": 41, "entropy": 4.15557 } ] }, { "rule": "Anthropic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "line_num": 1, "path": "./tests/samples/antrhropic", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "value_start": 0, "value_end": 107, "entropy": 5.42952 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_api = \"DvMB_glvwjlEQ_uqIyn8k\";", "line_num": 1, "path": "./tests/samples/api.toml", "info": "", "variable": "gi_reo_gi_api", "variable_start": 0, "variable_end": 13, "value": "DvMB_glvwjlEQ_uqIyn8k", "value_start": 17, "value_end": 38, "entropy": 4.1066 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "entropy": 5.77034 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "line_num": 2, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "value_start": 20, "value_end": 213, "entropy": 5.78724 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "line_num": 3, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "value_start": 22, "value_end": 216, "entropy": 5.76529 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "line_num": 4, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "value_start": 24, "value_end": 218, "entropy": 5.76679 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"kerberos_authentication\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\"", "line_num": 1, "path": "./tests/samples/auth.hs", "info": "", "variable": "kerberos_authentication", "variable_start": 1, "variable_end": 24, "value": "YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA", "value_start": 28, "value_end": 66, "entropy": 4.27373 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"authorization\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\"", "line_num": 2, "path": "./tests/samples/auth.hs", "info": "", "variable": "authorization", "variable_start": 1, "variable_end": 14, "value": "aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA", "value_start": 18, "value_end": 56, "entropy": 4.52399 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "headers = {authorization: /oauth_signature=\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\"/, content_type: 'application/json; charset=utf-8'}", "line_num": 3, "path": "./tests/samples/auth.hs", "info": "", "variable": "oauth_signature", "variable_start": 27, "variable_end": 42, "value": "JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D", "value_start": 44, "value_end": 76, "entropy": 4.53891 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "", "variable": "Authorization", "variable_start": 0, "variable_end": 13, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "", "variable": "NTLM", "variable_start": 15, "variable_end": 19, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Basic Authorization", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Basic", "variable_start": 24, "variable_end": 29, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Bearer", "variable_start": 24, "variable_end": 30, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A3T1DJ4IS97DLLTH2SZ3", "value_start": 56, "value_end": 76, "entropy": 3.82193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 14, "value_end": 34, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY45X", "value_start": 35, "value_end": 55, "entropy": 3.54644 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "line_num": 8, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "value_start": 0, "value_end": 48, "entropy": 4.88684 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "line_num": 9, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "value_start": 0, "value_end": 128, "entropy": 5.61388 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY123\",", "line_num": 3, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY323", "value_start": 191, "value_end": 211, "entropy": 3.44644 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "X-Amz-Credential", "variable_start": 174, "variable_end": 190, "value": "AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy", "value_start": 191, "value_end": 251, "entropy": 4.6314 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "X-Amz-Key", "variable_start": 252, "variable_end": 261, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI", "value_start": 262, "value_end": 313, "entropy": 4.96135 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gireogi323.s3.amazonaws.com", "value_start": 32, "value_end": 59, "entropy": 3.75416 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY321\"", "line_num": 53, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 }, { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "AccessKeyId", "variable_start": 5, "variable_end": 16, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"Token\" : \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 9, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "Token", "variable_start": 5, "variable_end": 10, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 15, "value_end": 66, "entropy": 4.96135 } ] }, { "rule": "AWS MWS Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.29, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "", "variable": "AWS_MWS_KEY", "variable_start": 0, "variable_end": 11, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"url\" : \"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\"}", "line_num": 1, "path": "./tests/samples/aws_s3_bucket", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "circle-production-action-output.s3.amazonaws.com", "value_start": 18, "value_end": 66, "entropy": 4.02467 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "Azure Storage Account Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "line_num": 5, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "value_start": 2, "value_end": 90, "entropy": 4.22483 } ] }, { "rule": "Azure Secret Value", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "client_srt = \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\";", "line_num": 1, "path": "./tests/samples/azure_secret_value", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "value_start": 14, "value_end": 54, "entropy": 4.75306 } ] }, { "rule": "Bitbucket HTTP Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"bitbucket\" : \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\"", "line_num": 1, "path": "./tests/samples/bitbuckert_http_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l", "value_start": 15, "value_end": 64, "entropy": 4.94084 } ] }, { "rule": "Bitbucket App Password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "line_num": 1, "path": "./tests/samples/bitbucket_app_password", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "value_start": 11, "value_end": 47, "entropy": 4.5934 } ] }, { "rule": "Bitbucket Repository Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "", "variable": "Bitbucket Repository Access Token", "variable_start": 1, "variable_end": 34, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Brevo API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/brevo", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 89, "entropy": 4.64688 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg", "line_num": 1, "path": "./tests/samples/cmd_credential", "info": "", "variable": "passphrase", "variable_start": 16, "variable_end": 26, "value": "N1DdkUD3E73", "value_start": 27, "value_end": 38, "entropy": 3.0958 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "mysql -u root --password Sne3sd8AZjq", "line_num": 2, "path": "./tests/samples/cmd_credential", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "Sne3sd8AZjq", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Domain 'localhost' -Password 'Sjdn43ss@!'", "line_num": 3, "path": "./tests/samples/cmd_credential", "info": "", "variable": "Password", "variable_start": 21, "variable_end": 29, "value": "Sjdn43ss@!", "value_start": 31, "value_end": 41, "entropy": 3.12193 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " --oauth2-bearer \"eZs2fjkjD8hUcsQ37b8zHig==\" \\", "line_num": 7, "path": "./tests/samples/cmd_credential", "info": "", "variable": "oauth2-bearer", "variable_start": 6, "variable_end": 19, "value": "eZs2fjkjD8hUcsQ37b8zHig==", "value_start": 21, "value_end": 46, "entropy": 4.32386 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 0.918, "line_data_list": [ { "line": "ConvertTo-SecureString -String -Force dsjUE#$gds8s", "line_num": 1, "path": "./tests/samples/cmd_secure_string", "info": "", "variable": "ConvertTo-SecureString -String -Force", "variable_start": 0, "variable_end": 37, "value": "dsjUE#$gds8s", "value_start": 38, "value_end": 50, "entropy": 3.02206 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"ConvertTo-SecureString \\\"4yd21JKH~GE8dkd\\\"\"", "line_num": 2, "path": "./tests/samples/cmd_secure_string", "info": "", "variable": "ConvertTo-SecureString", "variable_start": 1, "variable_end": 23, "value": "4yd21JKH~GE8dkd", "value_start": 26, "value_end": 41, "entropy": 3.5899 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gi_reo_gi_credential = \"K2u6mFw8wJOsAf\"", "line_num": 1, "path": "./tests/samples/credential.hs", "info": "", "variable": "gi_reo_gi_credential", "variable_start": 0, "variable_end": 20, "value": "K2u6mFw8wJOsAf", "value_start": 24, "value_end": 38, "entropy": 3.6645 } ] }, { "rule": "CURL User Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -X PUT -u \"admin:dG9rZW4g\" https://127.0.0.1 # TP", "line_num": 1, "path": "./tests/samples/curl_user_password", "info": "", "variable": "curl", "variable_start": 0, "variable_end": 4, "value": "dG9rZW4g", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DeepSeek API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": ">>>\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\u001b[0m<<<", "line_num": 1, "path": "./tests/samples/deepseek", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-615ef152bf865a131f88b23571dc4ee6", "value_start": 8, "value_end": 43, "entropy": 3.85416 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';", "line_num": 1, "path": "./tests/samples/digital_ocean_oauth_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c", "value_start": 14, "value_end": 85, "entropy": 4.05874 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 1, "path": "./tests/samples/digital_ocean_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 0, "value_end": 71, "entropy": 3.6568 } ] }, { "rule": "Discord Bot Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "line_num": 1, "path": "./tests/samples/discord_bot_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "value_start": 0, "value_end": 72, "entropy": 5.16257 } ] }, { "rule": "Discord Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "line_num": 1, "path": "./tests/samples/discord_webhook", "info": "", "variable": "discordapp.com/api/webhooks", "variable_start": 10, "variable_end": 37, "value": "/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "value_start": 37, "value_end": 125, "entropy": 5.23454 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"UserKeyword\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\"", "line_num": 5, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1328E04-88B6-4E2A-A5C0-A4D9B21754C4", "value_start": 16, "value_end": 52, "entropy": 3.8055 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "line_num": 2, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "value_start": 17, "value_end": 46, "entropy": 4.21126 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "password:!Dd5G4s9", "line_num": 3, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "!Dd5G4s9", "value_start": 9, "value_end": 17, "entropy": 3.0 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "line_num": 4, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "LONG_CREDENTIAL", "variable_start": 0, "variable_end": 15, "value": "AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "value_start": 17, "value_end": 5485, "entropy": 5.99409 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "if SECRET := getenv(\"CEKPET\", \"GEHEIMN1S\"):", "line_num": 1, "path": "./tests/samples/doc_get_p", "info": "", "variable": "SECRET", "variable_start": 3, "variable_end": 9, "value": "GEHEIMN1S", "value_start": 31, "value_end": 40, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "PASSWORD = os.environ.get(\"PASSWORD\") or \"at5G6zi!m\"", "line_num": 5, "path": "./tests/samples/doc_get_p", "info": "", "variable": "PASSWORD", "variable_start": 0, "variable_end": 8, "value": "at5G6zi!m", "value_start": 42, "value_end": 51, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.966, "line_data_list": [ { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.971, "line_data_list": [ { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr11Gg!", "value_start": 13, "value_end": 23, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr12Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr13Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr14Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.977, "line_data_list": [ { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr15Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr16Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr17Gg!", "value_start": 21, "value_end": 31, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr19Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.986, "line_data_list": [ { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 16, "variable_end": 19, "value": "dipPr110Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr111Gg!", "value_start": 22, "value_end": 33, "entropy": 3.02717 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.965, "line_data_list": [ { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr112Gg!", "value_start": 14, "value_end": 25, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr114Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr115Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr116Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr117Gg!", "value_start": 26, "value_end": 37, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr118Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr119Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "dipPr120Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr121Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "id:master pass:dipPr122Gg!", "line_num": 23, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr122Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr124Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr125Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr126Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user master --password dipPr127Gg!", "line_num": 28, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr127Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 34, "variable_end": 42, "value": "dipPr128Gg!", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr129Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr130Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Pwd", "variable_start": 18, "variable_end": 21, "value": "dipPr131Gg!", "value_start": 22, "value_end": 33, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 13, "variable_end": 21, "value": "dipPr132Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 18, "variable_end": 26, "value": "dipPr133Gg!", "value_start": 27, "value_end": 38, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr134Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr135Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 17, "variable_end": 25, "value": "dipPr136Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--username master --password dipPr137Gg!", "line_num": 38, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr137Gg!", "value_start": 29, "value_end": 40, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 16, "variable_end": 27, "value": "dipPr138Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 19, "variable_end": 30, "value": "dipPr139Gg!", "value_start": 31, "value_end": 42, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr140Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "ID:master/PASS:dipPr141Gg!", "line_num": 42, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PASS", "variable_start": 10, "variable_end": 14, "value": "dipPr141Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "passwd", "variable_start": 15, "variable_end": 21, "value": "dipPr142Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr143Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user=master,pass=dipPr144Gg!", "line_num": 45, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr144Gg!", "value_start": 17, "value_end": 28, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "dipPr145Gg!", "value_start": 9, "value_end": 20, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr146Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:master,pass:dipPr147Gg!", "line_num": 48, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr147Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 10, "variable_end": 12, "value": "dipPr148Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 23, "variable_end": 25, "value": "dipPr149Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr151Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr152Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 19, "variable_end": 27, "value": "dipPr154Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr155Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYuser=master ANY_pass=dipPr156Gg!", "line_num": 57, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_pass", "variable_start": 15, "variable_end": 23, "value": "dipPr156Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr157Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr158Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 20, "variable_end": 32, "value": "dipPr159Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 19, "variable_end": 31, "value": "dipPr160Gg!", "value_start": 32, "value_end": 43, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANY_USER=master ANY_PASS=dipPr161Gg!", "line_num": 62, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_PASS", "variable_start": 16, "variable_end": 24, "value": "dipPr161Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 25, "variable_end": 33, "value": "dipPr162Gg!", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 34, "variable_end": 37, "value": "dipPr163Gg!", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr164Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY-password", "variable_start": 20, "variable_end": 32, "value": "dipPr165Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "username:master pass:dipPr166Gg!", "line_num": 67, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 16, "variable_end": 20, "value": "dipPr166Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr168Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.981, "line_data_list": [ { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "dipPr169Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "user:master pass:dipPr172Gg!", "line_num": 73, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr172Gg!", "value_start": 17, "value_end": 28, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr174Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr175Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr176Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "dipPr177Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 10, "variable_end": 18, "value": "dipPr178Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr179Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Loging:master Password:dipPr180Gg!", "line_num": 81, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 14, "variable_end": 22, "value": "dipPr180Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Loging:master Pwd:dipPr181Gg!", "line_num": 82, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Pwd", "variable_start": 14, "variable_end": 17, "value": "dipPr181Gg!", "value_start": 18, "value_end": 29, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 18, "variable_end": 20, "value": "dipPr182Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr185Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr186Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr188Gg!", "value_start": 19, "value_end": 30, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr189Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.947, "line_data_list": [ { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "dipPr190Gg!", "value_start": 3, "value_end": 14, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr194Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "dipPr197Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "dipPr198Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.941, "line_data_list": [ { "line": "id:master@example.com,pw:IHQSB1GG!", "line_num": 102, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "IHQSB1GG!", "value_start": 25, "value_end": 34, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.023, "line_data_list": [ { "line": "ID/PW:master/iPp0@GRq", "line_num": 1, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp0@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.349, "line_data_list": [ { "line": "ID/Password:master/iPp2@GRq", "line_num": 3, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp2@GRq", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.084, "line_data_list": [ { "line": "ID/Pass:master/iPp3@GRq", "line_num": 4, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "master/iPp3@GRq", "value_start": 8, "value_end": 23, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.112, "line_data_list": [ { "line": "ID:PW=master:iPp4@GRq", "line_num": 5, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master:iPp4@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.038, "line_data_list": [ { "line": "ID/PW=master/iPp5@GRq", "line_num": 6, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp5@GRq", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.526, "line_data_list": [ { "line": "username/password:master/iPp7@GRq", "line_num": 8, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "password", "variable_start": 9, "variable_end": 17, "value": "master/iPp7@GRq", "value_start": 18, "value_end": 33, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.087, "line_data_list": [ { "line": "id/passwd:master/iPp8@GRq", "line_num": 9, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "passwd", "variable_start": 3, "variable_end": 9, "value": "master/iPp8@GRq", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.882, "line_data_list": [ { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 22, "variable_end": 24, "value": "iPp10@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.001, "line_data_list": [ { "line": "\uc544\uc774\ub514/PW:master/iPp16@GRq", "line_num": 17, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 4, "variable_end": 6, "value": "master/iPp16@GRq", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.003, "line_data_list": [ { "line": "\uacc4\uc815/PW:master/iPp17@GRq", "line_num": 18, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp17@GRq", "value_start": 6, "value_end": 22, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.367, "line_data_list": [ { "line": "98.76.54.32 id/pw:master/iPp19@GRq", "line_num": 20, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "pw", "variable_start": 15, "variable_end": 17, "value": "master/iPp19@GRq", "value_start": 18, "value_end": 34, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.035, "line_data_list": [ { "line": "ID/PWD:master/iPp21@GRq", "line_num": 22, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PWD", "variable_start": 3, "variable_end": 6, "value": "master/iPp21@GRq", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.1, "line_data_list": [ { "line": "user/pwd:master/iPp22@GRq", "line_num": 23, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "pwd", "variable_start": 5, "variable_end": 8, "value": "master/iPp22@GRq", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.082, "line_data_list": [ { "line": "user/pass:master/iPp25@GRq", "line_num": 26, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "pass", "variable_start": 5, "variable_end": 9, "value": "master/iPp25@GRq", "value_start": 10, "value_end": 26, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.651, "line_data_list": [ { "line": "ID/Password=master/iPp27@GRq", "line_num": 28, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp27@GRq", "value_start": 12, "value_end": 28, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.049, "line_data_list": [ { "line": "ID/PW:master/iPp28@GRq", "line_num": 29, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 3, "variable_end": 5, "value": "master/iPp28@GRq", "value_start": 6, "value_end": 22, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "Password:Prl23Db#@", "line_num": 1, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "pw:Prl23Db#@", "line_num": 3, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pw", "variable_start": 0, "variable_end": 2, "value": "Prl23Db#@", "value_start": 3, "value_end": 12, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "Password=Prl23Db#@", "line_num": 4, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "pwd:Prl23Db#@", "line_num": 5, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "Prl23Db#@", "value_start": 4, "value_end": 13, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password=Prl23Db#@", "line_num": 8, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "pass:Prl23Db#@", "line_num": 10, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pass", "variable_start": 0, "variable_end": 4, "value": "Prl23Db#@", "value_start": 5, "value_end": 14, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY-password=Prl23Db#@", "line_num": 11, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY-password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32 password:Prl23Db#@", "line_num": 14, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 19, "variable_end": 27, "value": "Prl23Db#@", "value_start": 28, "value_end": 37, "entropy": 3.16993 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "--Password Prl23Db#@", "line_num": 15, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 2, "variable_end": 10, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "ANY_PW:Prl23Db#@", "line_num": 17, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY_PW", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "default password:Prl23Db#@", "line_num": 18, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "Prl23Db#@", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"password\":\"Prl23Db#@\"", "line_num": 21, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 1, "variable_end": 9, "value": "Prl23Db#@", "value_start": 12, "value_end": 21, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "Passwd:Prl23Db#@ Prl23Db#@", "line_num": 23, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Passwd", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.219, "line_data_list": [ { "line": "PW:Prl23Db#@,password:Prl23Db#@", "line_num": 24, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "Prl23Db#@", "value_start": 3, "value_end": 12, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "PW:Prl23Db#@,password:Prl23Db#@", "line_num": 24, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "Prl23Db#@", "value_start": 22, "value_end": 31, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password:Prl23Db#@,\ube44\ubc88:Prl23Db#@", "line_num": 25, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "passwd=Prl23Db#@", "line_num": 26, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "passwd", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "password:Prl23Db#@, paasword:Prl23Db#@", "line_num": 30, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", "line_num": 31, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", "line_num": 31, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANYPassword", "variable_start": 19, "variable_end": 30, "value": "Prl23Db#@", "value_start": 31, "value_end": 40, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "Password:Prl23Db#@,pwd=Prl23Db#@", "line_num": 32, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.926, "line_data_list": [ { "line": "Password:Prl23Db#@,pwd=Prl23Db#@", "line_num": 32, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pwd", "variable_start": 19, "variable_end": 22, "value": "Prl23Db#@", "value_start": 23, "value_end": 32, "entropy": 3.16993 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-password \"Prl23Db#@\"", "line_num": 33, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 1, "variable_end": 9, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password:Prl23Db#@", "line_num": 34, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "--password=Prl23Db#@", "line_num": 37, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 2, "variable_end": 10, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "root/Prl23Db#@,root password:Prl23Db#@", "line_num": 38, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "Prl23Db#@", "value_start": 29, "value_end": 38, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@", "line_num": 40, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "Prl23Db#@", "value_start": 48, "value_end": 57, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Prl23Db#@:password:Prl23Db#@", "line_num": 41, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "Prl23Db#@", "value_start": 19, "value_end": 28, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYpassword=Prl23Db#@", "line_num": 45, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 0, "variable_end": 11, "value": "Prl23Db#@", "value_start": 12, "value_end": 21, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "passwords:Prl23Db#@", "line_num": 46, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "passwords", "variable_start": 0, "variable_end": 9, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "password=>Prl23Db#@", "line_num": 48, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.984, "line_data_list": [ { "line": "# password: keep empty", "line_num": 56, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 2, "variable_end": 10, "value": "keep", "value_start": 12, "value_end": 16, "entropy": 1.5 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-Token:AIhq5Xyb1Gga9Q0", "line_num": 1, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY-Token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q0", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token:AIhq5Xyb1Gga9Q2", "line_num": 3, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "AIhq5Xyb1Gga9Q2", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "KEY", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "SECRET KEY", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret=AIhq5Xyb1Gga9Q4", "line_num": 5, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q4", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--token AIhq5Xyb1Gga9Q5", "line_num": 6, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 2, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q5", "value_start": 8, "value_end": 23, "entropy": 3.77356 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret:AIhq5Xyb1Gga9Q6", "line_num": 7, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q6", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_token=AIhq5Xyb1Gga9Q7", "line_num": 8, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q7", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-secret AIhq5Xyb1Gga9Q10", "line_num": 11, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 1, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q10", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY.secret=AIhq5Xyb1Gga9Q19", "line_num": 20, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY.secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q19", "value_start": 11, "value_end": 27, "entropy": 3.75 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--secret=AIhq5Xyb1Gga9Q21", "line_num": 22, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 2, "variable_end": 8, "value": "AIhq5Xyb1Gga9Q21", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_secret:AIhq5Xyb1Gga9Q22", "line_num": 23, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q22", "value_start": 11, "value_end": 27, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Token:AIhq5Xyb1Gga9Q23", "line_num": 24, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Token", "variable_start": 1, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q23", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "API Secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access key:AIhq5Xyb1Gga9Q26", "line_num": 27, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q26", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Secret Key", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_key=AIhq5Xyb1Gga9Q29", "line_num": 30, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_key", "variable_start": 0, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q29", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", "line_num": 32, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_token", "variable_start": 24, "variable_end": 33, "value": "AIhq5Xyb1Gga9Q31", "value_start": 34, "value_end": 50, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access_token:AIhq5Xyb1Gga9Q33", "line_num": 34, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "access_token", "variable_start": 0, "variable_end": 12, "value": "AIhq5Xyb1Gga9Q33", "value_start": 13, "value_end": 29, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 15, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Authentication key", "variable_start": 0, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.001, "line_data_list": [ { "line": "page.action?spaceKey=LOGIC&title=QUANTUM\",", "line_num": 39, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "spaceKey", "variable_start": 12, "variable_end": 20, "value": "LOGIC", "value_start": 21, "value_end": 26, "entropy": 2.32193 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "Enter token : This is a query parameter", "line_num": 40, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 6, "variable_end": 11, "value": "This", "value_start": 14, "value_end": 18, "entropy": 2.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "\"key\":\"attached_file_0\"", "line_num": 41, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 1, "variable_end": 4, "value": "attached_file_0", "value_start": 7, "value_end": 22, "entropy": 3.37356 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 3, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.964, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.414, "line_data_list": [ { "line": "Password:master/IhqSb1Gg", "line_num": 5, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "master/IhqSb1Gg", "value_start": 9, "value_end": 24, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", "line_num": 6, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", "line_num": 7, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 11, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 53, "variable_end": 61, "value": "IhqSb1Gg", "value_start": 62, "value_end": 70, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.111, "line_data_list": [ { "line": "ID/Pass:xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg", "line_num": 13, "path": "./tests/samples/doc_various", "info": "", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "xxxx:master/IhqSb1Gg", "value_start": 8, "value_end": 28, "entropy": 3.92193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", "line_num": 15, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 25, "variable_end": 28, "value": "IhqSb1Gg", "value_start": 29, "value_end": 37, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.602, "line_data_list": [ { "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", "line_num": 16, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "IhqSb1Gg", "value_start": 13, "value_end": 21, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32(pw:IhqSb1Gg)", "line_num": 17, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32/pw:IhqSb1Gg", "line_num": 19, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "", "variable": "PWD", "variable_start": 43, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 22, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 42, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 23, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 37, "variable_end": 39, "value": "IhqSb1Gg", "value_start": 40, "value_end": 48, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 25, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 41, "variable_end": 49, "value": "IhqSb1Gg", "value_start": 50, "value_end": 58, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "IhqSb1Gg", "value_start": 48, "value_end": 56, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password,default:IhqSb1Gg", "line_num": 31, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_password,default", "variable_start": 0, "variable_end": 20, "value": "IhqSb1Gg", "value_start": 21, "value_end": 29, "entropy": 3.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Key(ANYSecret):IhqSb1Gg", "line_num": 32, "path": "./tests/samples/doc_various", "info": "", "variable": "ANYSecret)", "variable_start": 4, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32 ANY_PW:IhqSb1Gg", "line_num": 34, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_PW", "variable_start": 12, "variable_end": 18, "value": "IhqSb1Gg", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "98.76.54.32(ID/PW:IhqSb1Gg)", "line_num": 36, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "IhqSb1Gg", "value_start": 18, "value_end": 26, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", "line_num": 38, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 26, "variable_end": 29, "value": "IhqSb1Gg", "value_start": 30, "value_end": 38, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "password for master:IhqSb1Gg", "line_num": 43, "path": "./tests/samples/doc_various", "info": "", "variable": "password for master", "variable_start": 0, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.116, "line_data_list": [ { "line": "ID/Pass:xxxx:master/IhqSb1Gg xxxx:master/IhqSb1Gg", "line_num": 45, "path": "./tests/samples/doc_various", "info": "", "variable": "Pass", "variable_start": 3, "variable_end": 7, "value": "xxxx:master/IhqSb1Gg", "value_start": 8, "value_end": 28, "entropy": 3.92193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "./tests/samples/doc_various", "info": "", "variable": "ANYpw", "variable_start": 8, "variable_end": 13, "value": "IhqSb1Ga", "value_start": 14, "value_end": 22, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", "line_num": 47, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", "line_num": 51, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.286, "line_data_list": [ { "line": "\uacc4\uc815/Password-xxxx:master/IhqSb1Gg", "line_num": 55, "path": "./tests/samples/doc_various", "info": "", "variable": "Password-xxxx", "variable_start": 3, "variable_end": 16, "value": "master/IhqSb1Gg", "value_start": 17, "value_end": 32, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", "line_num": 56, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", "line_num": 61, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_pwd", "variable_start": 14, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Acount name:xxxx Initial Password:IhqSb1Gg", "line_num": 62, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 25, "variable_end": 33, "value": "IhqSb1Gg", "value_start": 34, "value_end": 42, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Access wifi:xxxx(PW:IhqSb1Gg)", "line_num": 63, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-User:master -PasswordANY:IhqSb1Gg", "line_num": 66, "path": "./tests/samples/doc_various", "info": "", "variable": "PasswordANY", "variable_start": 14, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.052, "line_data_list": [ { "line": "98.76.54.32(ID/PW:master/IhqSb1Gg)", "line_num": 70, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "master/IhqSb1Gg", "value_start": 18, "value_end": 33, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.012, "line_data_list": [ { "line": "(ID&PWD):master/IhqSb1Gg", "line_num": 71, "path": "./tests/samples/doc_various", "info": "", "variable": "PWD)", "variable_start": 4, "variable_end": 8, "value": "master/IhqSb1Gg", "value_start": 9, "value_end": 24, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 73, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "master@98.76.54.32,PW:IhqSb1Gg", "line_num": 74, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "98.76.54.32 pw:IhqSb1Gg", "line_num": 75, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "config:xxxx,PW:IhqSb1Gg", "line_num": 78, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 82, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 35, "variable_end": 37, "value": "IhqSb1Gg", "value_start": 38, "value_end": 46, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 84, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", "line_num": 85, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", "line_num": 87, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", "line_num": 90, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", "line_num": 93, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 94, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 37, "variable_end": 45, "value": "IhqSb1Gg", "value_start": 46, "value_end": 54, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", "line_num": 96, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 36, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", "line_num": 97, "path": "./tests/samples/doc_various", "info": "", "variable": "pass", "variable_start": 37, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 100, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", "line_num": 101, "path": "./tests/samples/doc_various", "info": "", "variable": "pass", "variable_start": 40, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 35, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", "line_num": 104, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 44, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", "line_num": 106, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", "line_num": 108, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 23, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "line_num": 1, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "value_start": 10, "value_end": 46, "entropy": 4.68354 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "line_num": 2, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "value_start": 10, "value_end": 46, "entropy": 3.89106 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "line_num": 3, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "value_start": 10, "value_end": 51, "entropy": 4.78414 } ] }, { "rule": "Docker Swarm Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "line_num": 4, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "value_start": 10, "value_end": 95, "entropy": 5.06757 } ] }, { "rule": "Docker Swarm Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "line_num": 6, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "value_start": 10, "value_end": 62, "entropy": 4.95515 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.011, "line_data_list": [ { "line": " ", "line_num": 7, "path": "./tests/samples/drawio", "info": "", "variable": "password", "variable_start": 1178, "variable_end": 1186, "value": "String<", "value_start": 1188, "value_end": 1197, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " ", "line_num": 13, "path": "./tests/samples/drawio", "info": "", "variable": "Password", "variable_start": 146, "variable_end": 154, "value": "Dw7^&amp;nd&lt;dj", "value_start": 162, "value_end": 187, "entropy": 3.59327 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 13, "path": "./tests/samples/drawio", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-b2e4-1afe-9129474bcd81", "value_start": 100, "value_end": 136, "entropy": 3.60702 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": " ", "line_num": 16, "path": "./tests/samples/drawio", "info": "", "variable": "textpassword", "variable_start": 46, "variable_end": 58, "value": "Df34D&", "value_start": 60, "value_end": 69, "entropy": 2.9477 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": " ", "line_num": 31, "path": "./tests/samples/drawio", "info": "", "variable": "secret", "variable_start": 35, "variable_end": 41, "value": "&", "value_start": 43, "value_end": 47, "entropy": 2.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": " ", "line_num": 34, "path": "./tests/samples/drawio", "info": "", "variable": "pass", "variable_start": 35, "variable_end": 39, "value": "Dsfgh%$d&", "value_start": 41, "value_end": 53, "entropy": 3.58496 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 45, "path": "./tests/samples/drawio", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "value_start": 52, "value_end": 88, "entropy": 3.68703 } ] }, { "rule": "Dropbox API secret (long term)", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", "line_num": 1, "path": "./tests/samples/dropbox_api_secret_long_term", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", "value_start": 9, "value_end": 73, "entropy": 4.89362 } ] }, { "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", "line_num": 1, "path": "./tests/samples/dropbox_app_secret", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wpv1jq9xwanbn3n", "value_start": 24, "value_end": 39, "entropy": 3.45656 } ] }, { "rule": "Dropbox OAuth2 API Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", "line_num": 1, "path": "./tests/samples/dropbox_oauth_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", "value_start": 15, "value_end": 153, "entropy": 5.61894 } ] }, { "rule": "Dynatrace API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, "path": "./tests/samples/dynatrace_api.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "value_start": 0, "value_end": 96, "entropy": 4.93241 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.964, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "", "variable": "GI_REO_GI_FACEBOOK_TOKEN", "variable_start": 0, "variable_end": 24, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Facebook App Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "line_num": 2, "path": "./tests/samples/facebook_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "value_start": 0, "value_end": 44, "entropy": 4.60694 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "line_num": 1, "path": "./tests/samples/figma", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "value_start": 0, "value_end": 45, "entropy": 4.98619 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "line_num": 2, "path": "./tests/samples/figma", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "value_start": 0, "value_end": 45, "entropy": 4.85286 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test-app-domain-42.firebaseapp.com", "line_num": 1, "path": "./tests/samples/firebase_domain", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test-app-domain-42.firebaseapp.com", "value_start": 0, "value_end": 34, "entropy": 3.98423 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test2.io.firebaseio.com", "line_num": 2, "path": "./tests/samples/firebase_domain", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test2.io.firebaseio.com", "value_start": 0, "value_end": 23, "entropy": 3.52271 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", "line_num": 1, "path": "./tests/samples/github_classic_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ghp_00000000000000000000000000000004WZ4EQ", "value_start": 0, "value_end": 41, "entropy": 1.56292 } ] }, { "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/github_fine_granted_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 93, "entropy": 5.41519 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token", "line_num": 2, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP", "value_start": 0, "value_end": 39, "entropy": 4.59259 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret", "line_num": 3, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc", "value_start": 0, "value_end": 70, "entropy": 4.0466 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token", "line_num": 4, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gldt-9BeUoeWu2V9uUS3uLoMy", "value_start": 0, "value_end": 25, "entropy": 4.13366 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token", "line_num": 5, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrt-2CR8_eVxiio-1QmzPZwa", "value_start": 0, "value_end": 25, "entropy": 4.48386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "line_num": 6, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "value_start": 0, "value_end": 31, "entropy": 4.54275 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token", "line_num": 7, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL", "value_start": 0, "value_end": 28, "entropy": 4.42325 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token", "line_num": 8, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", "value_start": 0, "value_end": 46, "entropy": 3.96956 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glft-Aafqn5A31G-2VipZMh28 # Feed token", "line_num": 9, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glft-Aafqn5A31G-2VipZMh28", "value_start": 0, "value_end": 25, "entropy": 4.32386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token", "line_num": 10, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glimt-1jpqzsnw2n71om0r9kgt06os3", "value_start": 0, "value_end": 31, "entropy": 4.43807 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token", "line_num": 11, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg", "value_start": 0, "value_end": 58, "entropy": 5.18979 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies", "line_num": 12, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2", "value_start": 0, "value_end": 48, "entropy": 4.32185 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsoat-971om0ecn5A386r9k481 # SCIM Tokens", "line_num": 13, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsoat-971om0ecn5A386r9k481", "value_start": 0, "value_end": 27, "entropy": 4.45859 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token", "line_num": 14, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glffct-AnRWYdo3Si_Xm2Q6n7zu", "value_start": 0, "value_end": 27, "entropy": 4.60674 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token", "line_num": 15, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr", "value_start": 0, "value_end": 47, "entropy": 5.18204 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token", "line_num": 16, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ", "value_start": 0, "value_end": 38, "entropy": 4.70175 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token", "line_num": 18, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", "value_start": 0, "value_end": 29, "entropy": 4.58212 } ] }, { "rule": "Google API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key", "line_num": 1, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315", "value_start": 0, "value_end": 39, "entropy": 4.35298 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # Google OAuth Secret", "line_num": 2, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 35, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token", "line_num": 3, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S", "value_start": 0, "value_end": 51, "entropy": 5.01537 } ] }, { "rule": "Google OAuth Refresh Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token", "line_num": 4, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_", "value_start": 0, "value_end": 102, "entropy": 5.43821 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "line_num": 2, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "value_start": 0, "value_end": 72, "entropy": 4.80827 }, { "line": "4L2QMyTm6Rr0o46ytGiReoG1", "line_num": 4, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4L2QMyTm6Rr0o46ytGiReoG1", "value_start": 0, "value_end": 24, "entropy": 4.08496 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", "value_start": 6, "value_end": 78, "entropy": 4.80827 }, { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Grafana Access Policy Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", "line_num": 1, "path": "./tests/samples/grafana_access_policy_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", "value_start": 18, "value_end": 130, "entropy": 5.15841 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", "line_num": 1, "path": "./tests/samples/grafana_provisioned_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", "value_start": 11, "value_end": 107, "entropy": 3.81531 } ] }, { "rule": "Grafana Service Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "line_num": 1, "path": "./tests/samples/grafana_service_accounts", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, "value_end": 46, "entropy": 4.71879 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.01691 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 3, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Hashicorp Terraform Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 1, "path": "./tests/samples/hashicorp", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 90, "entropy": 5.47059 } ] }, { "rule": "Hashicorp Vault Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 2, "path": "./tests/samples/hashicorp", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 94, "entropy": 5.53423 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "line_num": 1, "path": "./tests/samples/heroku", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "value_start": 0, "value_end": 65, "entropy": 5.32822 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "line_num": 2, "path": "./tests/samples/heroku", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "value_start": 0, "value_end": 41, "entropy": 4.0555 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.70256 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "url/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/part", "line_num": 2, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 4, "value_end": 41, "entropy": 4.77702 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "line_num": 6, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "value_start": 0, "value_end": 37, "entropy": 4.62811 } ] }, { "rule": "Instagram Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "line_num": 1, "path": "./tests/samples/instagram_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, "value_end": 162, "entropy": 5.23164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/iso_ir_111.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "line_num": 1, "path": "./tests/samples/jfrog_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "value_start": 0, "value_end": 64, "entropy": 5.28891 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "line_num": 2, "path": "./tests/samples/jfrog_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "value_start": 0, "value_end": 73, "entropy": 5.35394 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "line_num": 1, "path": "./tests/samples/jira_confluence_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 63, "value_end": 107, "entropy": 4.60694 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: \"image/png\": \"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\n\",", "line_num": 2, "path": "./tests/samples/jira_confluence_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 67, "value_end": 111, "entropy": 4.60694 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=", "line_num": 1, "path": "./tests/samples/json_web_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0", "value_start": 0, "value_end": 407, "entropy": 5.27189 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, "path": "./tests/samples/json_web_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "value_start": 10, "value_end": 75, "entropy": 5.03815 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"[EC]\",", "line_num": 3, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"[EC", "value_start": 8, "value_end": 19, "entropy": 3.02717 }, { "line": " \"d\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\"", "line_num": 4, "path": "./tests/samples/jwk.json", "info": "", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-", "value_start": 14, "value_end": 57, "entropy": 4.87953 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"RSA\",", "line_num": 7, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"RSA\"", "value_start": 8, "value_end": 20, "entropy": 2.9183 }, { "line": " \"d\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\"", "line_num": 10, "path": "./tests/samples/jwk.json", "info": "", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY", "value_start": 14, "value_end": 100, "entropy": 5.43459 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"oct\",", "line_num": 13, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"oct\"", "value_start": 8, "value_end": 20, "entropy": 2.75163 }, { "line": " \"k\": \"WrMwQfoNaHTgXU5fZvRGAD\"", "line_num": 16, "path": "./tests/samples/jwk.json", "info": "", "variable": "k", "variable_start": 9, "variable_end": 10, "value": "WrMwQfoNaHTgXU5fZvRGAD", "value_start": 14, "value_end": 36, "entropy": 4.36852 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 12, "value_end": 47, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 2, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 3, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 4, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 5, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 6, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "line_num": 1, "path": "./tests/samples/key.php", "info": "", "variable": "$key", "variable_start": 0, "variable_end": 4, "value": "gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "value_start": 8, "value_end": 64, "entropy": 4.96772 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );", "line_num": 3, "path": "./tests/samples/key.php", "info": "", "variable": "PASSWORD", "variable_start": 9, "variable_end": 17, "value": "2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG", "value_start": 22, "value_end": 53, "entropy": 4.63162 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "pkey = (\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\"", "line_num": 1, "path": "./tests/samples/key.py", "info": "", "variable": "pkey", "variable_start": 0, "variable_end": 4, "value": "LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn", "value_start": 9, "value_end": 71, "entropy": 4.71236 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "print(\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\")", "line_num": 7, "path": "./tests/samples/key.py", "info": "", "variable": "key", "variable_start": 34, "variable_end": 37, "value": "dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB", "value_start": 38, "value_end": 93, "entropy": 4.96282 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "PKEY = \"\"\"-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 9, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 10, "value_end": 45, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 10, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 11, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 12, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 13, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 14, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----\"\"\"", "line_num": 15, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "line_num": 1, "path": "./tests/samples/llama", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "value_start": 0, "value_end": 52, "entropy": 5.03958 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "line_num": 2, "path": "./tests/samples/llama", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "value_start": 0, "value_end": 52, "entropy": 5.05602 } ] }, { "rule": "MailChimp API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "mailchimp = \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\"", "line_num": 1, "path": "./tests/samples/mailchimp_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36", "value_start": 13, "value_end": 50, "entropy": 4.75662 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "key-a25a4ac62a074cd52c668c6b9937cf40", "line_num": 1, "path": "./tests/samples/mailgun", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "key-a25a4ac62a074cd52c668c6b9937cf40", "value_start": 0, "value_end": 36, "entropy": 3.91661 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "line_num": 2, "path": "./tests/samples/mailgun", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "value_start": 0, "value_end": 50, "entropy": 3.85669 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Netlify Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "line_num": 1, "path": "./tests/samples/netlify", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "value_start": 0, "value_end": 40, "entropy": 4.61531 } ] }, { "rule": "NKEY Seed", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "line_num": 2, "path": "./tests/samples/nkey_seed", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "value_start": 3, "value_end": 61, "entropy": 4.55826 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'", "line_num": 1, "path": "./tests/samples/nonce.py", "info": "", "variable": "nonce", "variable_start": 0, "variable_end": 5, "value": "bsfcvir57nt40rydvtbhs8lzbgljmet5", "value_start": 9, "value_end": 41, "entropy": 4.39032 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password: F1lT3ReDw17hQoT3s", "line_num": 3, "path": "./tests/samples/nonce.py", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "F1lT3ReDw17hQoT3s", "value_start": 10, "value_end": 27, "entropy": 3.73452 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\", "line_num": 7, "path": "./tests/samples/nonce.py", "info": "", "variable": "key_wrap", "variable_start": 0, "variable_end": 8, "value": "KJHhJKhKU7yguyuyfrtsdESffhjgkhYT", "value_start": 12, "value_end": 44, "entropy": 4.11673 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK", "line_num": 11, "path": "./tests/samples/nonce.py", "info": "", "variable": "key_multi", "variable_start": 0, "variable_end": 9, "value": "KJHfdjs8767gr54534wsFHGf5hJKhK", "value_start": 15, "value_end": 45, "entropy": 4.12323 } ] }, { "rule": "Notion Integration Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "line_num": 1, "path": "./tests/samples/notion", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "value_start": 0, "value_end": 50, "entropy": 5.06876 } ] }, { "rule": "NPM Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "positive: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", "line_num": 2, "path": "./tests/samples/npm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 9, "value_end": 49, "entropy": 4.80306 } ] }, { "rule": "NTLM Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "line_num": 1, "path": "./tests/samples/ntlm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "value_start": 10, "value_end": 190, "entropy": 3.79713 } ] }, { "rule": "NuGet API key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'", "line_num": 1, "path": "./tests/samples/nuget_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam", "value_start": 5, "value_end": 51, "entropy": 4.56129 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 51, "entropy": 5.22625 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "line_num": 3, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "value_start": 0, "value_end": 56, "entropy": 5.25816 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "line_num": 7, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "value_start": 0, "value_end": 56, "entropy": 4.12555 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "WXFES7QNTET5DQYC", "line_num": 1, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WXFES7QNTET5DQYC", "value_start": 0, "value_end": 16, "entropy": 3.625 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "line_num": 2, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "value_start": 0, "value_end": 32, "entropy": 4.14032 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "password_id = 2938479", "line_num": 5, "path": "./tests/samples/pass_filtered", "info": "", "variable": "password_id", "variable_start": 0, "variable_end": 11, "value": "2938479", "value_start": 14, "value_end": 21, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "gi_reo_gi_passwd", "variable_start": 0, "variable_end": 16, "value": "cAc48k1Zd7", "value_start": 20, "value_end": 30, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "password_confirmation", "variable_start": 33, "variable_end": 54, "value": "cAc48k1Zd7", "value_start": 58, "value_end": 68, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "password = \"cackle!\"", "line_num": 1, "path": "./tests/samples/password.gradle", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 12, "value_end": 19, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 9, "path": "./tests/samples/password.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = \"MYPSWRD!@#$%^&*\"", "line_num": 1, "path": "./tests/samples/password.tfvars", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "MYPSWRD!@#$%^&*", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA", "line_num": 1, "path": "./tests/samples/password_TRUE", "info": "", "variable": "MYSQLPASS", "variable_start": 0, "variable_end": 9, "value": "Ce7shE0ENPiBlE_EdEose0cBAA", "value_start": 11, "value_end": 37, "entropy": 3.8693 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "my_pw: nCzx8A8#!", "line_num": 2, "path": "./tests/samples/password_TRUE", "info": "", "variable": "my_pw", "variable_start": 0, "variable_end": 5, "value": "nCzx8A8#!", "value_start": 7, "value_end": 16, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "val password: String = \"exord13Paw64\", // scala", "line_num": 3, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "exord13Paw64", "value_start": 24, "value_end": 36, "entropy": 3.58496 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "def connect(passwd: str = \"cq2tPr1a2\"): # python default arg", "line_num": 4, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "cq2tPr1a2", "value_start": 27, "value_end": 36, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if passworsd == \"q4c1a2oPd\": # __eq__ separator", "line_num": 5, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "q4c1a2oPd", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if passworsd != \"x6s7djtEa\": # __ne__ separator", "line_num": 6, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "x6s7djtEa", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password=2bkJgtJDiLcq1t", "line_num": 7, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "2bkJgtJDiLcq1t", "value_start": 9, "value_end": 23, "entropy": 3.52164 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passin", "variable_start": 33, "variable_end": 39, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "", "variable": "pass", "variable_start": 41, "variable_end": 45, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;", "line_num": 12, "path": "./tests/samples/password_TRUE", "info": "", "variable": "MYSQL_DATABASE_PASSWORD", "variable_start": 25, "variable_end": 48, "value": "2IWJD88FH4Y", "value_start": 49, "value_end": 60, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "#define password \"n84ASM54y4\"", "line_num": 15, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.065, "line_data_list": [ { "line": "#define password {0x48, 0x65, 0x6C, 0x6C, 0x30}", "line_num": 16, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "0x48, 0x65, 0x6C, 0x6C, 0x30", "value_start": 18, "value_end": 46, "entropy": 3.02613 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%define PASSWORD \"n84ASM54y4\"", "line_num": 18, "path": "./tests/samples/password_TRUE", "info": "", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%global PASSWORD \"n84RPM54y4\"", "line_num": 19, "path": "./tests/samples/password_TRUE", "info": "", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84RPM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SET password \"n83.bat47Fy4\"", "line_num": 21, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "n83.bat47Fy4", "value_start": 14, "value_end": 26, "entropy": 3.4183 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"#define\\tpassword\\t\\\"n84ASM54y4\\\"\"", "line_num": 23, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "n84ASM54y4", "value_start": 22, "value_end": 32, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "line_num": 25, "path": "./tests/samples/password_TRUE", "info": "", "variable": "WPA2_PASSWORD", "variable_start": 0, "variable_end": 13, "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "value_start": 15, "value_end": 79, "entropy": 3.67082 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/password_utf16.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.914, "line_data_list": [ { "line": "+ \"password\": \"dkajc\u00f61\"", "line_num": 9, "path": "./tests/samples/password_western.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajc\u00f61", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "PayPal Braintree Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "line_num": 1, "path": "./tests/samples/paypal_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "value_start": 0, "value_end": 73, "entropy": 4.39985 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", "line_num": 2, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 13, "value_end": 44, "entropy": 3.38229 }, { "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "line_num": 3, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "value_start": 0, "value_end": 108, "entropy": 5.52555 }, { "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "line_num": 4, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "value_start": 0, "value_end": 110, "entropy": 5.49388 }, { "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "line_num": 5, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "value_start": 0, "value_end": 106, "entropy": 5.44383 }, { "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "line_num": 6, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "value_start": 0, "value_end": 90, "entropy": 5.53586 }, { "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "line_num": 7, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "value_start": 0, "value_end": 96, "entropy": 5.46977 }, { "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "line_num": 8, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "value_start": 0, "value_end": 110, "entropy": 5.55951 }, { "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "line_num": 9, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "value_start": 0, "value_end": 112, "entropy": 5.49108 }, { "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "line_num": 10, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "value_start": 0, "value_end": 114, "entropy": 5.57587 }, { "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "line_num": 11, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "value_start": 0, "value_end": 63, "entropy": 4.72341 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", "line_num": 14, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "value_start": 16, "value_end": 262, "entropy": 5.56558 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "line_num": 27, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 47, "entropy": 3.8375 }, { "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "line_num": 28, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, "value_end": 120, "entropy": 3.30679 }, { "line": "-----END LOW ENTROPY PRIVATE KEY-----", "line_num": 29, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 37, "entropy": 3.55488 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " * -----BEGIN PGP PRIVATE KEY BLOCK-----", "line_num": 35, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 42, "entropy": 3.62218 }, { "line": " * Version: GnuPG v1.4.12 (GNU/Linux)", "line_num": 36, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": " * Version: GnuPG v1.4.12 (GNU/Linux)", "value_start": 0, "value_end": 39, "entropy": 4.33255 }, { "line": "", "line_num": 37, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "", "value_start": 0, "value_end": 0, "entropy": 0.0 }, { "line": " * KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "line_num": 38, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "line_num": 39, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " //\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "line_num": 40, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "value_start": 4, "value_end": 68, "entropy": 5.20695 }, { "line": " ///\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "line_num": 41, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "value_start": 5, "value_end": 69, "entropy": 5.13876 }, { "line": " // UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "line_num": 42, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "value_start": 6, "value_end": 70, "entropy": 5.19868 }, { "line": " /// q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "line_num": 43, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "value_start": 7, "value_end": 71, "entropy": 5.13876 }, { "line": "// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/", "line_num": 44, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1", "value_start": 7, "value_end": 71, "entropy": 5.17157 }, { "line": "# # # * 874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "line_num": 45, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#+#+#+# * IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "line_num": 46, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "value_start": 11, "value_end": 75, "entropy": 5.17157 }, { "line": " + 'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +", "line_num": 47, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi", "value_start": 6, "value_end": 70, "entropy": 5.10751 }, { "line": " +\"\" +\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\"+", "line_num": 48, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh", "value_start": 8, "value_end": 72, "entropy": 5.10493 }, { "line": " * pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "line_num": 49, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "value_start": 5, "value_end": 69, "entropy": 5.23407 }, { "line": " * gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "line_num": 50, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "value_start": 5, "value_end": 69, "entropy": 5.15977 }, { "line": " * QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "line_num": 51, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "value_start": 5, "value_end": 69, "entropy": 5.20892 }, { "line": " * iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "line_num": 52, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "value_start": 5, "value_end": 69, "entropy": 4.94102 }, { "line": " * 5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "line_num": 53, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "value_start": 5, "value_end": 69, "entropy": 5.28891 }, { "line": " * HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "line_num": 54, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "line_num": 55, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "line_num": 56, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " * OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "line_num": 57, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "value_start": 5, "value_end": 69, "entropy": 5.04087 }, { "line": " * idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "line_num": 58, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "value_start": 5, "value_end": 69, "entropy": 5.14798 }, { "line": " * TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "line_num": 59, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "value_start": 5, "value_end": 69, "entropy": 5.17923 }, { "line": " * /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "line_num": 60, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "value_start": 5, "value_end": 69, "entropy": 4.99017 }, { "line": " * OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "line_num": 61, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "value_start": 5, "value_end": 69, "entropy": 5.21461 }, { "line": " * 4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "line_num": 62, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "value_start": 5, "value_end": 69, "entropy": 5.07782 }, { "line": " * sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "line_num": 63, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "value_start": 5, "value_end": 69, "entropy": 5.10907 }, { "line": " * ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "line_num": 64, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "value_start": 5, "value_end": 69, "entropy": 5.09314 }, { "line": " * n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "line_num": 65, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "value_start": 5, "value_end": 49, "entropy": 4.98773 }, { "line": " * =JG+I", "line_num": 66, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "=JG+I", "value_start": 5, "value_end": 10, "entropy": 2.32193 }, { "line": " * -----END PGP PRIVATE KEY BLOCK-----", "line_num": 67, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 40, "entropy": 3.62274 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "k = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 1, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 7, "value_end": 34, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 2, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 10, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "#6 0.245 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 9, "value_end": 36, "entropy": 3.20029 }, { "line": "#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "line_num": 3, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "value_start": 9, "value_end": 73, "entropy": 4.69647 }, { "line": "#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "line_num": 4, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "value_start": 9, "value_end": 73, "entropy": 4.99586 }, { "line": "#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "line_num": 5, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "value_start": 9, "value_end": 73, "entropy": 5.13462 }, { "line": "#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "line_num": 6, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "value_start": 9, "value_end": 73, "entropy": 5.12086 }, { "line": "#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "line_num": 7, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "value_start": 9, "value_end": 73, "entropy": 4.78866 }, { "line": "#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "line_num": 8, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "value_start": 9, "value_end": 73, "entropy": 4.74561 }, { "line": "#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "line_num": 9, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "value_start": 9, "value_end": 73, "entropy": 4.89577 }, { "line": "#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "line_num": 10, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "value_start": 9, "value_end": 73, "entropy": 4.81189 }, { "line": "#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "line_num": 11, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "value_start": 9, "value_end": 73, "entropy": 4.74717 }, { "line": "#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "line_num": 12, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "value_start": 9, "value_end": 73, "entropy": 4.72227 }, { "line": "#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "line_num": 13, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "value_start": 9, "value_end": 73, "entropy": 4.71244 }, { "line": "#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "line_num": 14, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "value_start": 9, "value_end": 73, "entropy": 4.85947 }, { "line": "#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "line_num": 15, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "value_start": 9, "value_end": 73, "entropy": 4.86673 }, { "line": "#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "line_num": 16, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "value_start": 9, "value_end": 73, "entropy": 4.72006 }, { "line": "#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "line_num": 17, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "value_start": 9, "value_end": 73, "entropy": 4.49369 }, { "line": "#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "line_num": 18, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "value_start": 9, "value_end": 73, "entropy": 4.85141 }, { "line": "#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "line_num": 19, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "value_start": 9, "value_end": 73, "entropy": 4.92157 }, { "line": "#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "line_num": 20, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "value_start": 9, "value_end": 73, "entropy": 4.71436 }, { "line": "#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "line_num": 21, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "value_start": 9, "value_end": 73, "entropy": 4.69102 }, { "line": "#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "line_num": 22, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "value_start": 9, "value_end": 73, "entropy": 4.55202 }, { "line": "#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "line_num": 23, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "value_start": 9, "value_end": 73, "entropy": 4.70776 }, { "line": "#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "line_num": 24, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "value_start": 9, "value_end": 73, "entropy": 4.68689 }, { "line": "#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "line_num": 25, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "value_start": 9, "value_end": 73, "entropy": 4.85337 }, { "line": "#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "line_num": 26, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "value_start": 9, "value_end": 73, "entropy": 4.79657 }, { "line": "#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "line_num": 27, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "value_start": 9, "value_end": 73, "entropy": 4.76945 }, { "line": "#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "line_num": 28, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "value_start": 9, "value_end": 73, "entropy": 4.70126 }, { "line": "#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "line_num": 29, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "value_start": 9, "value_end": 73, "entropy": 4.74525 }, { "line": "#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "line_num": 30, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "line_num": 31, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "value_start": 9, "value_end": 73, "entropy": 4.84924 }, { "line": "#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "line_num": 32, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "value_start": 9, "value_end": 73, "entropy": 4.78518 }, { "line": "#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "line_num": 33, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "value_start": 9, "value_end": 73, "entropy": 4.73346 }, { "line": "#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "line_num": 34, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "value_start": 9, "value_end": 73, "entropy": 4.69143 }, { "line": "#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "line_num": 35, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "line_num": 36, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "value_start": 9, "value_end": 73, "entropy": 4.94712 }, { "line": "#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "line_num": 37, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "value_start": 9, "value_end": 73, "entropy": 5.09727 }, { "line": "#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "line_num": 38, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "line_num": 39, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "line_num": 40, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "value_start": 9, "value_end": 73, "entropy": 5.46875 }, { "line": "#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "line_num": 41, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "line_num": 42, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "value_start": 9, "value_end": 73, "entropy": 5.17923 }, { "line": "#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "line_num": 43, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "line_num": 44, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "line_num": 45, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "line_num": 46, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "value_start": 9, "value_end": 73, "entropy": 5.10751 }, { "line": "#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "line_num": 47, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "line_num": 48, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "line_num": 49, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "line_num": 50, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "line_num": 51, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "line_num": 52, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "value_start": 9, "value_end": 73, "entropy": 5.32782 }, { "line": "#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "line_num": 53, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "line_num": 54, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "value_start": 9, "value_end": 73, "entropy": 5.07212 }, { "line": "#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "line_num": 55, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "line_num": 56, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "line_num": 57, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "value_start": 9, "value_end": 73, "entropy": 5.23407 }, { "line": "#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "line_num": 58, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "line_num": 59, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "value_start": 9, "value_end": 73, "entropy": 5.19516 }, { "line": "#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "line_num": 60, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "line_num": 61, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "value_start": 9, "value_end": 73, "entropy": 5.17157 }, { "line": "#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "line_num": 62, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "value_start": 9, "value_end": 73, "entropy": 5.24173 }, { "line": "#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "line_num": 63, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "line_num": 64, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "value_start": 9, "value_end": 73, "entropy": 5.15821 }, { "line": "#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "line_num": 65, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "value_start": 9, "value_end": 73, "entropy": 5.04657 }, { "line": "#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "line_num": 66, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "line_num": 67, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "value_start": 9, "value_end": 73, "entropy": 5.11673 }, { "line": "#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "line_num": 68, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "value_start": 9, "value_end": 73, "entropy": 4.92197 }, { "line": "#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "line_num": 69, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "value_start": 9, "value_end": 73, "entropy": 5.20282 }, { "line": "#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "line_num": 70, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "value_start": 9, "value_end": 73, "entropy": 5.30836 }, { "line": "#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "line_num": 71, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "line_num": 72, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "value_start": 9, "value_end": 73, "entropy": 5.19102 }, { "line": "#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "line_num": 73, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "line_num": 74, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "value_start": 9, "value_end": 73, "entropy": 5.08392 }, { "line": "#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "line_num": 75, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "line_num": 76, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "value_start": 9, "value_end": 73, "entropy": 5.33195 }, { "line": "#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "line_num": 77, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "value_start": 9, "value_end": 73, "entropy": 5.16743 }, { "line": "#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "line_num": 78, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "value_start": 9, "value_end": 73, "entropy": 5.26118 }, { "line": "#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "line_num": 79, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "value_start": 9, "value_end": 73, "entropy": 5.21048 }, { "line": "#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "line_num": 80, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "line_num": 81, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "line_num": 82, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "value_start": 9, "value_end": 73, "entropy": 4.99017 }, { "line": "#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "line_num": 83, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "value_start": 9, "value_end": 73, "entropy": 5.38266 }, { "line": "#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "line_num": 84, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "value_start": 9, "value_end": 73, "entropy": 5.28477 }, { "line": "#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "line_num": 85, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "line_num": 86, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "value_start": 9, "value_end": 73, "entropy": 5.10493 }, { "line": "#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "line_num": 87, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "line_num": 88, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "line_num": 89, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "line_num": 90, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "line_num": 91, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "value_start": 9, "value_end": 73, "entropy": 5.16391 }, { "line": "#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "line_num": 92, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "value_start": 9, "value_end": 73, "entropy": 5.31602 }, { "line": "#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "line_num": 93, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "line_num": 94, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "value_start": 9, "value_end": 73, "entropy": 4.96658 }, { "line": "#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "line_num": 95, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "line_num": 96, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "value_start": 9, "value_end": 73, "entropy": 5.10907 }, { "line": "#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "line_num": 97, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "line_num": 98, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "line_num": 99, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "value_start": 9, "value_end": 73, "entropy": 5.27711 }, { "line": "#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "line_num": 100, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "line_num": 101, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "value_start": 9, "value_end": 73, "entropy": 5.05423 }, { "line": "#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "line_num": 102, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "value_start": 9, "value_end": 73, "entropy": 4.90408 }, { "line": "#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "line_num": 103, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "line_num": 104, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "value_start": 9, "value_end": 73, "entropy": 5.13266 }, { "line": "#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "line_num": 105, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "value_start": 9, "value_end": 73, "entropy": 5.14798 }, { "line": "#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS", "line_num": 106, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aANEEoU1dXIzisq6pQ0J8AKS", "value_start": 9, "value_end": 33, "entropy": 4.4183 }, { "line": "#6 0.245 -----END PRIVATE KEY-----", "line_num": 107, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 9, "value_end": 34, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"rsa512.log\": \"\\\\r\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\r\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\r\\\\n#5 DONE 0.3s\\\\r\\\\n\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.docker.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----", "value_start": 102, "value_end": 749, "entropy": 5.8742 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "line_num": 2, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "value_start": 0, "value_end": 64, "entropy": 4.72268 }, { "line": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "line_num": 3, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "value_start": 0, "value_end": 64, "entropy": 5.12852 }, { "line": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "line_num": 4, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "value_start": 0, "value_end": 56, "entropy": 5.24468 }, { "line": "-----END PRIVATE KEY-----", "line_num": 5, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 25, "value_end": 55, "entropy": 3.30775 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "line_num": 2, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "value_start": 0, "value_end": 64, "entropy": 4.64072 }, { "line": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "line_num": 3, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "value_start": 0, "value_end": 64, "entropy": 5.22641 }, { "line": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "line_num": 4, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "value_start": 0, "value_end": 56, "entropy": 5.11058 }, { "line": "-----END EC PRIVATE KEY-----`", "line_num": 5, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END EC PRIVATE KEY-----", "value_start": 0, "value_end": 28, "entropy": 3.16542 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " PRIVATE_KEY = \"-----BEGIN RSA PRIVATE KEY-----\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 19, "value_end": 50, "entropy": 3.38229 }, { "line": " + \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n", "value_start": 10, "value_end": 74, "entropy": 4.53081 }, { "line": " + \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp", "value_start": 11, "value_end": 75, "entropy": 5.25352 }, { "line": " + \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP", "value_start": 13, "value_end": 77, "entropy": 5.09727 }, { "line": " + \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI", "value_start": 11, "value_end": 75, "entropy": 5.10907 }, { "line": " + \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5", "value_start": 9, "value_end": 73, "entropy": 5.0629 }, { "line": " + \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR", "value_start": 10, "value_end": 74, "entropy": 5.10907 }, { "line": " + \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\n\"", "line_num": 10, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0", "value_start": 11, "value_end": 75, "entropy": 5.15211 }, { "line": " + \"GeGaqMojMT7//g==\\n\"", "line_num": 11, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GeGaqMojMT7//g==", "value_start": 10, "value_end": 26, "entropy": 3.5 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\n\";", "line_num": 12, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 9, "value_end": 38, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 16, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 6, "value_end": 33, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 17, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 18, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 19, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 20, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 21, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 22, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 23, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 24, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 25, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 20, "value_end": 47, "entropy": 3.20029 }, { "line": "2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "line_num": 3, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "value_start": 20, "value_end": 84, "entropy": 4.67767 }, { "line": "2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "line_num": 4, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "value_start": 20, "value_end": 84, "entropy": 5.06602 }, { "line": "2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "line_num": 5, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "line_num": 6, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "line_num": 7, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "value_start": 20, "value_end": 84, "entropy": 5.27298 }, { "line": "2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "line_num": 8, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "value_start": 20, "value_end": 84, "entropy": 5.4375 }, { "line": "2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "line_num": 9, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "line_num": 10, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "value_start": 20, "value_end": 84, "entropy": 5.2382 }, { "line": "2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "line_num": 11, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "value_start": 20, "value_end": 84, "entropy": 5.27711 }, { "line": "2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "line_num": 12, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "line_num": 13, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "value_start": 20, "value_end": 84, "entropy": 5.09571 }, { "line": "2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "line_num": 14, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "value_start": 20, "value_end": 84, "entropy": 5.34375 }, { "line": "2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "line_num": 15, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "value_start": 20, "value_end": 84, "entropy": 5.14384 }, { "line": "2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "line_num": 16, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "value_start": 20, "value_end": 84, "entropy": 5.22993 }, { "line": "2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "line_num": 17, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "line_num": 18, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "value_start": 20, "value_end": 84, "entropy": 4.86869 }, { "line": "2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "line_num": 19, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "value_start": 20, "value_end": 84, "entropy": 5.35907 }, { "line": "2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "line_num": 20, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "value_start": 20, "value_end": 84, "entropy": 5.24173 }, { "line": "2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "line_num": 21, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "value_start": 20, "value_end": 84, "entropy": 5.00352 }, { "line": "2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "line_num": 22, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "line_num": 23, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "line_num": 24, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "line_num": 25, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "value_start": 20, "value_end": 84, "entropy": 4.95282 }, { "line": "2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "line_num": 26, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "value_start": 20, "value_end": 84, "entropy": 5.05836 }, { "line": "2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "line_num": 27, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "line_num": 28, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "line_num": 29, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "value_start": 20, "value_end": 84, "entropy": 5.13462 }, { "line": "2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "line_num": 30, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "line_num": 31, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "line_num": 32, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "value_start": 20, "value_end": 84, "entropy": 5.04243 }, { "line": "2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "line_num": 33, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "line_num": 34, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "value_start": 20, "value_end": 84, "entropy": 4.84727 }, { "line": "2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "line_num": 35, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "line_num": 36, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "line_num": 37, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "value_start": 20, "value_end": 84, "entropy": 5.13618 }, { "line": "2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "line_num": 38, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "value_start": 20, "value_end": 84, "entropy": 5.04657 }, { "line": "2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "line_num": 39, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "value_start": 20, "value_end": 84, "entropy": 5.10141 }, { "line": "2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "line_num": 40, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "value_start": 20, "value_end": 84, "entropy": 5.11673 }, { "line": "2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "line_num": 41, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "line_num": 42, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "line_num": 43, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "value_start": 20, "value_end": 84, "entropy": 5.21461 }, { "line": "2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "line_num": 44, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "line_num": 45, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "value_start": 20, "value_end": 84, "entropy": 5.02752 }, { "line": "2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "line_num": 46, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "line_num": 47, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "value_start": 20, "value_end": 84, "entropy": 5.25 }, { "line": "2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "line_num": 48, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "value_start": 20, "value_end": 84, "entropy": 5.12852 }, { "line": "2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "line_num": 49, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "value_start": 20, "value_end": 84, "entropy": 5.12283 }, { "line": "2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "line_num": 50, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "value_start": 20, "value_end": 84, "entropy": 5.12696 }, { "line": "2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "line_num": 51, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "line_num": 52, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "line_num": 53, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "line_num": 54, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "value_start": 20, "value_end": 84, "entropy": 4.94712 }, { "line": "2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "line_num": 55, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "line_num": 56, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "line_num": 57, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "value_start": 20, "value_end": 84, "entropy": 4.98251 }, { "line": "2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "line_num": 58, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "value_start": 20, "value_end": 84, "entropy": 5.19102 }, { "line": "2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "line_num": 59, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "line_num": 60, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "value_start": 20, "value_end": 84, "entropy": 5.02711 }, { "line": "2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "line_num": 61, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "value_start": 20, "value_end": 84, "entropy": 5.15211 }, { "line": "2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "line_num": 62, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "value_start": 20, "value_end": 84, "entropy": 5.09727 }, { "line": "2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "line_num": 63, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "value_start": 20, "value_end": 84, "entropy": 5.25352 }, { "line": "2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "line_num": 64, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "line_num": 65, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "line_num": 66, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "line_num": 67, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "value_start": 20, "value_end": 84, "entropy": 5.03477 }, { "line": "2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "line_num": 68, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "value_start": 20, "value_end": 84, "entropy": 4.99173 }, { "line": "2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "line_num": 69, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "line_num": 70, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "value_start": 20, "value_end": 84, "entropy": 5.21048 }, { "line": "2026-04-26 12:36:01 qwI=", "line_num": 71, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qwI=", "value_start": 20, "value_end": 24, "entropy": 2.0 }, { "line": "2026-04-26 12:36:01 -----END PRIVATE KEY-----", "line_num": 72, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 20, "value_end": 45, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----", "value_start": 157, "value_end": 6245, "entropy": 5.8771 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": "mlkem-privatekey.pem\\r\\n2026-04-26 12", "variable_start": 113, "variable_end": 150, "value": "36:01", "value_start": 151, "value_end": 156, "entropy": 2.32193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.0, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": "KEY-----\\r\\n2026-04-26 12", "variable_start": 176, "variable_end": 201, "value": "36:01", "value_start": 202, "value_end": 207, "entropy": 2.32193 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "line_num": 2, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "value_start": 0, "value_end": 64, "entropy": 4.67611 }, { "line": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "line_num": 3, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "value_start": 0, "value_end": 64, "entropy": 5.10493 }, { "line": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "line_num": 4, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "value_start": 0, "value_end": 64, "entropy": 5.21461 }, { "line": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "line_num": 5, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "value_start": 0, "value_end": 64, "entropy": 4.97641 }, { "line": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "line_num": 6, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "value_start": 0, "value_end": 64, "entropy": 5.17923 }, { "line": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "line_num": 7, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "value_start": 0, "value_end": 64, "entropy": 5.25766 }, { "line": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "line_num": 8, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "value_start": 0, "value_end": 64, "entropy": 5.35141 }, { "line": "24n7nBfD3ZXv", "line_num": 9, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "24n7nBfD3ZXv", "value_start": 0, "value_end": 12, "entropy": 3.4183 }, { "line": "-----END PRIVATE KEY-----", "line_num": 10, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "Perplexity API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/perplexity", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 53, "entropy": 5.08142 } ] }, { "rule": "Picatic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "line_num": 1, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "value_start": 0, "value_end": 44, "entropy": 4.86251 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "line_num": 2, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "value_start": 0, "value_end": 50, "entropy": 4.89366 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "line_num": 3, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "value_start": 0, "value_end": 53, "entropy": 5.07217 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "line_num": 4, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "value_start": 0, "value_end": 61, "entropy": 5.03312 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "line_num": 5, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "value_start": 0, "value_end": 64, "entropy": 5.04657 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "line_num": 1, "path": "./tests/samples/postman", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "value_start": 0, "value_end": 64, "entropy": 4.21698 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "line_num": 2, "path": "./tests/samples/postman", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "value_start": 0, "value_end": 31, "entropy": 4.3492 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81", "line_num": 10, "path": "./tests/samples/pretty.html", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0572bc9-7a3e-beef-cafe-9129474bcd81", "value_start": 41, "value_end": 77, "entropy": 3.84286 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " ", "line_num": 79, "path": "./tests/samples/pretty.html", "info": "", "variable": "token", "variable_start": 50, "variable_end": 55, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 56, "value_end": 102, "entropy": 4.79509 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "line_num": 80, "path": "./tests/samples/pretty.html", "info": "", "variable": "token", "variable_start": 42, "variable_end": 47, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 48, "value_end": 94, "entropy": 4.79509 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": " 147# password: Jd3OnNy^564eD5_sd", "line_num": 147, "path": "./tests/samples/pretty.html", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "Jd3OnNy^564eD5_sd", "value_start": 22, "value_end": 39, "entropy": 3.85217 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " 151# a0ce4d19-7a3e-beef-cafe-9129474bcd81", "line_num": 151, "path": "./tests/samples/pretty.html", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0ce4d19-7a3e-beef-cafe-9129474bcd81", "value_start": 13, "value_end": 49, "entropy": 3.74259 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.929, "line_data_list": [ { "line": "pwd = \"cackle!\"", "line_num": 1, "path": "./tests/samples/pwd.gradle", "info": "", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "cackle!", "value_start": 7, "value_end": 14, "entropy": 2.52164 } ] }, { "rule": "PyPi API Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "line_num": 1, "path": "./tests/samples/pypi_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "value_start": 0, "value_end": 179, "entropy": 5.5923 } ] }, { "rule": "RubyGems API Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "line_num": 1, "path": "./tests/samples/rubygems", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "value_start": 0, "value_end": 57, "entropy": 4.06282 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DFT5H59PHLAN0IA", "value_start": 9, "value_end": 26, "entropy": 3.45482 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DG9UE38D6ELk5l", "value_start": 27, "value_end": 43, "entropy": 3.625 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00Dh68fkeHGbDk92k", "value_start": 61, "value_end": 78, "entropy": 3.57247 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DyXD47kKDny11j", "value_start": 44, "value_end": 60, "entropy": 3.32782 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "line_num": 3, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "value_start": 8, "value_end": 120, "entropy": 5.19811 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "line_num": 4, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "value_start": 13, "value_end": 98, "entropy": 5.45622 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.492, "line_data_list": [ { "line": "var Himalayan_salt = \"$hal$1te$TnnGdhednJsdQ5nfetwZ\";", "line_num": 1, "path": "./tests/samples/salt.hs", "info": "", "variable": "Himalayan_salt", "variable_start": 4, "variable_end": 18, "value": "$hal$1te$TnnGdhednJsdQ5nfetwZ", "value_start": 22, "value_end": 51, "entropy": 3.9523 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "salt1 = b\"\\x23!\\xae2389x&543@\"", "line_num": 1, "path": "./tests/samples/salt.py", "info": "", "variable": "salt1", "variable_start": 0, "variable_end": 5, "value": "\\x23!\\xae2389x&543@", "value_start": 10, "value_end": 29, "entropy": 3.53689 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.237, "line_data_list": [ { "line": "salt2 = r\"\"\"\\0x12\\0x3s\"\"\"", "line_num": 2, "path": "./tests/samples/salt.py", "info": "", "variable": "salt2", "variable_start": 0, "variable_end": 5, "value": "\\0x12\\0x3s", "value_start": 12, "value_end": 22, "entropy": 2.72193 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.949, "line_data_list": [ { "line": "salt3 = u\"\\u0020827634876\"", "line_num": 3, "path": "./tests/samples/salt.py", "info": "", "variable": "salt3", "variable_start": 0, "variable_end": 5, "value": "\\u0020827634876", "value_start": 10, "value_end": 25, "entropy": 3.05656 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "salt4 = {\"salt5\": \"my124%#$@s\\x04clt\\0\"}", "line_num": 4, "path": "./tests/samples/salt.py", "info": "", "variable": "salt5", "variable_start": 10, "variable_end": 15, "value": "my124%#$@s\\x04clt\\0", "value_start": 19, "value_end": 38, "entropy": 3.93214 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "json_escaped = \"{\\\\\\\"salt8\\\\\\\":\\\\\\\"4b9a6d8b638eb0c6\\\\\\\"}\"", "line_num": 5, "path": "./tests/samples/salt.py", "info": "", "variable": "salt8", "variable_start": 21, "variable_end": 26, "value": "4b9a6d8b638eb0c6", "value_start": 35, "value_end": 51, "entropy": 3.28064 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.812, "line_data_list": [ { "line": "#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "line_num": 2, "path": "./tests/samples/sample.h", "info": "", "variable": "AESKEY", "variable_start": 8, "variable_end": 14, "value": "0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "value_start": 16, "value_end": 83, "entropy": 3.24263 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "TokenRequest", "line_num": 9, "path": "./tests/samples/sample.html", "info": "", "variable": "token", "variable_start": 28, "variable_end": 33, "value": "g1re0g1T0keN3zWx", "value_start": 40, "value_end": 56, "entropy": 3.5 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " placeholder=\"Your password: "g1re0g1Pa5$w0Rd"\"", "line_num": 16, "path": "./tests/samples/sample.html", "info": "", "variable": "Your password", "variable_start": 17, "variable_end": 30, "value": "g1re0g1Pa5$w0Rd", "value_start": 38, "value_end": 53, "entropy": 3.50689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": " ", "line_num": 21, "path": "./tests/samples/sample.html", "info": "", "variable": "password", "variable_start": 30, "variable_end": 38, "value": "g1re0g2Pa5$w0Rd", "value_start": 39, "value_end": 54, "entropy": 3.64022 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36}{\\loch", "line_num": 25, "path": "./tests/samples/sample.rtf", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36", "value_start": 0, "value_end": 36, "entropy": 3.84286 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.193, "line_data_list": [ { "line": "%define bld %(if [[ \"%{password}\" =~ \"himmelsrand\" ]]; then echo \"y\"; else echo \"n\"; fi)", "line_num": 1, "path": "./tests/samples/sample.spec", "info": "", "variable": "%{password}", "variable_start": 21, "variable_end": 32, "value": "himmelsrand", "value_start": 38, "value_end": 49, "entropy": 3.27761 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "line_num": 2, "path": "./tests/samples/sample.spec", "info": "", "variable": "token", "variable_start": 8, "variable_end": 13, "value": "4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "value_start": 14, "value_end": 78, "entropy": 3.73644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " AKIAGIREOGIAWSKEY321==", "line_num": 3, "path": "./tests/samples/sample.tm7", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 11, "value_end": 31, "entropy": 3.54644 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " 17205d79-dead-beef-a311-26312ad6ea36", "line_num": 4, "path": "./tests/samples/sample.tm7", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "17205d79-dead-beef-a311-26312ad6ea36", "value_start": 9, "value_end": 45, "entropy": 3.60702 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " May password:6Ew1ThY0u", "line_num": 5, "path": "./tests/samples/sample.tm7", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "6Ew1ThY0u", "value_start": 24, "value_end": 33, "entropy": 3.16993 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": " __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "line_num": 13, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "__NONCE", "variable_start": 4, "variable_end": 11, "value": "AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "value_start": 13, "value_end": 394, "entropy": 5.81513 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.265, "line_data_list": [ { "line": "if string(secret) == \"cackle!\" {", "line_num": 1, "path": "./tests/samples/secret.go", "info": "", "variable": "secret)", "variable_start": 10, "variable_end": 17, "value": "cackle!", "value_start": 22, "value_end": 29, "entropy": 2.52164 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201},", "line_num": 3, "path": "./tests/samples/secret.go", "info": "", "variable": "Secret", "variable_start": 8, "variable_end": 14, "value": "333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201", "value_start": 23, "value_end": 99, "entropy": 3.10882 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 14, "value_end": 49, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 8, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 9, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 10, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 11, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 12, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", "line_num": 17, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_1", "variable_start": 4, "variable_end": 34, "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", "line_num": 18, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_2", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", "value_start": 36, "value_end": 76, "entropy": 4.78418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", "line_num": 19, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_3", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", "line_num": 20, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path__", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", "value_start": 36, "value_end": 76, "entropy": 4.85306 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "LEGACY_GITHUB_SECRET = \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\"", "line_num": 1, "path": "./tests/samples/secret.groovy", "info": "", "variable": "LEGACY_GITHUB_SECRET", "variable_start": 0, "variable_end": 20, "value": "fa87409ad3a4589fd279c501b3d2e174855ee9f4", "value_start": 24, "value_end": 64, "entropy": 3.80869 } ] }, { "rule": "SendGrid API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SG.gireogigireogigi.gireogigireogigi", "line_num": 1, "path": "./tests/samples/sendgrid_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SG.gireogigireogigi.gireogigireogigi", "value_start": 0, "value_end": 36, "entropy": 2.60219 } ] }, { "rule": "Sentry Organization Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "line_num": 1, "path": "./tests/samples/sentry", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "value_start": 0, "value_end": 179, "entropy": 5.53873 } ] }, { "rule": "Sentry User Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/sentry", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 71, "entropy": 4.14384 } ] }, { "rule": "Shopify Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"shopyfy_k\": \"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\",", "line_num": 1, "path": "./tests/samples/shopify_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 18, "value_end": 56, "entropy": 3.80396 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "line_num": 1, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "value_start": 0, "value_end": 97, "entropy": 4.32216 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "line_num": 2, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "value_start": 0, "value_end": 56, "entropy": 4.71996 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "line_num": 3, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "value_start": 0, "value_end": 171, "entropy": 4.93756 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "line_num": 4, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "value_start": 0, "value_end": 153, "entropy": 4.95538 } ] }, { "rule": "Slack Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"hook\": \"https://hooks.slack.com/services/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\",", "line_num": 1, "path": "./tests/samples/slack_webhook.template", "info": "", "variable": "hooks.slack.com/services", "variable_start": 21, "variable_end": 45, "value": "/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg", "value_start": 45, "value_end": 93, "entropy": 4.76184 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',", "line_num": 1, "path": "./tests/samples/sonarqube", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab", "value_start": 16, "value_end": 60, "entropy": 4.10151 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "line_num": 2, "path": "./tests/samples/sonarqube", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "value_start": 14, "value_end": 58, "entropy": 3.954 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.918, "line_data_list": [ { "line": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';", "line_num": 1, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY", "variable_start": 0, "variable_end": 70, "value": "SqLpa5sW0rD", "value_start": 72, "value_end": 83, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.917, "line_data_list": [ { "line": "'create user name identified by 'SqLpa5sW0rD' --", "line_num": 2, "path": "./tests/samples/sql_password", "info": "", "variable": "create user name identified by", "variable_start": 1, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 3, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`", "line_num": 4, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'haproxy'@'%' IDENTIFIED BY", "variable_start": 2, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 5, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.041, "line_data_list": [ { "line": "expected_statement = \"\"\"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 6, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 24, "variable_end": 63, "value": "SqLpa5sW0rD", "value_start": 65, "value_end": 76, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.914, "line_data_list": [ { "line": "CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 8, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 0, "variable_end": 39, "value": "SqLpa5sW0rD", "value_start": 41, "value_end": 52, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "", "variable": "PASSWORD", "variable_start": 26, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 36, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.992, "line_data_list": [ { "line": "ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\"", "line_num": 10, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER ROLE postgres PASSWORD", "variable_start": 0, "variable_end": 28, "value": "SqLpa5sW0rD", "value_start": 30, "value_end": 41, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 11, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER username WITH PASSWORD", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "", "variable": "PASSWORD", "variable_start": 27, "variable_end": 35, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 37, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;", "line_num": 13, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER chuck WITH PASSWORD", "variable_start": 0, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;", "line_num": 14, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD", "variable_start": 0, "variable_end": 45, "value": "SqLpa5sW0rD", "value_start": 47, "value_end": 58, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 15, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER myuser WITH PASSWORD", "variable_start": 0, "variable_end": 32, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 16, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER username WITH PASSWORD", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 36, "value_end": 47, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 17, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 47, "value": "SqLpa5sW0rD", "value_start": 49, "value_end": 60, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.553, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.10.10.%' identified by 'SqLpa5sW0rD';", "line_num": 18, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'super_user'@'10.10.10.%' identified by", "variable_start": 0, "variable_end": 50, "value": "SqLpa5sW0rD", "value_start": 52, "value_end": 63, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.899, "line_data_list": [ { "line": "ALTER USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 19, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.991, "line_data_list": [ { "line": "CREATE USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 20, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.997, "line_data_list": [ { "line": "CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 21, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 48, "value": "SqLpa5sW0rD", "value_start": 50, "value_end": 61, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "mysql -u root -pdbadmin -e \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\"\u2013 ", "line_num": 22, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY", "variable_start": 28, "variable_end": 77, "value": "SqLpa5sW0rD", "value_start": 79, "value_end": 90, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "-c \"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\"", "line_num": 23, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE scram_test login password", "variable_start": 4, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.995, "line_data_list": [ { "line": "CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;", "line_num": 24, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE app_admin WITH LOGIN PASSWORD", "variable_start": 0, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 42, "value_end": 53, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';", "line_num": 25, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE flask_admin_geo LOGIN PASSWORD", "variable_start": 0, "variable_end": 42, "value": "SqLpa5sW0rD", "value_start": 44, "value_end": 55, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.702, "line_data_list": [ { "line": "create role forum_example_graph_demo login password 'SqLpa5sW0rD';", "line_num": 26, "path": "./tests/samples/sql_password", "info": "", "variable": "create role forum_example_graph_demo login password", "variable_start": 0, "variable_end": 51, "value": "SqLpa5sW0rD", "value_start": 53, "value_end": 64, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.722, "line_data_list": [ { "line": "create role forum_example_graph login password 'SqLpa5sW0rD';", "line_num": 27, "path": "./tests/samples/sql_password", "info": "", "variable": "create role forum_example_graph login password", "variable_start": 0, "variable_end": 46, "value": "SqLpa5sW0rD", "value_start": 48, "value_end": 59, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.12, "line_data_list": [ { "line": "SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');", "line_num": 28, "path": "./tests/samples/sql_password", "info": "", "variable": "SET PASSWORD FOR 'username'@'localhost' = PASSWORD", "variable_start": 0, "variable_end": 50, "value": "SqLpa5sW0rD", "value_start": 52, "value_end": 63, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.549, "line_data_list": [ { "line": "insert into mysql.user values(PASSWORD('SqLpa5sW0rD') );", "line_num": 29, "path": "./tests/samples/sql_password", "info": "", "variable": "insert into mysql.user values(PASSWORD", "variable_start": 0, "variable_end": 38, "value": "SqLpa5sW0rD", "value_start": 40, "value_end": 51, "entropy": 3.45943 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 0.097, "line_data_list": [ { "line": "UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';", "line_num": 30, "path": "./tests/samples/sql_password", "info": "", "variable": "authentication_string", "variable_start": 22, "variable_end": 43, "value": "SqLpa5sW0rD", "value_start": 57, "value_end": 68, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.097, "line_data_list": [ { "line": "UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';", "line_num": 30, "path": "./tests/samples/sql_password", "info": "", "variable": "UPDATE mysql.user SET authentication_string = PASSWORD", "variable_start": 0, "variable_end": 54, "value": "SqLpa5sW0rD", "value_start": 57, "value_end": 68, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1", "line_num": 31, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS", "variable_start": 0, "variable_end": 70, "value": "*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409", "value_start": 72, "value_end": 113, "entropy": 3.78769 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.849, "line_data_list": [ { "line": "sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\; >>tmp.sql;'", "line_num": 32, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER typeorm_mg IDENTIFIED BY", "variable_start": 12, "variable_end": 48, "value": "SqLpa5sW0rD\\;", "value_start": 49, "value_end": 62, "entropy": 3.70044 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.10.%' PASSWORD EXPIRE INTERVAL 90 DAY;", "line_num": 34, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'super_user'@'10.10.%' PASSWORD", "variable_start": 0, "variable_end": 42, "value": "EXPIRE", "value_start": 43, "value_end": 49, "entropy": 2.25163 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "ALTER USER 'super_user'@'10.1.%' PASSWORD HISTORY 1;", "line_num": 35, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'super_user'@'10.1.%' PASSWORD", "variable_start": 0, "variable_end": 41, "value": "HISTORY", "value_start": 42, "value_end": 49, "entropy": 2.80735 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;", "line_num": 36, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'username'@'%' PASSWORD", "variable_start": 0, "variable_end": 34, "value": "EXPIRE", "value_start": 35, "value_end": 41, "entropy": 2.25163 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.0, "line_data_list": [ { "line": "alter user \"bob\"@\"localhost\" identified with sha256_password by '';", "line_num": 38, "path": "./tests/samples/sql_password", "info": "", "variable": "alter user \"bob\"@\"localhost\" identified with sha256_password by", "variable_start": 0, "variable_end": 63, "value": "", "value_start": 65, "value_end": 81, "entropy": 3.625 } ] }, { "rule": "Square Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"SQT\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",", "line_num": 1, "path": "./tests/samples/square_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF", "value_start": 12, "value_end": 76, "entropy": 4.66018 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sq0atp-GIREOGICR0CKLE12W45A78", "line_num": 1, "path": "./tests/samples/square_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0atp-GIREOGICR0CKLE12W45A78", "value_start": 0, "value_end": 29, "entropy": 4.44419 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "20241204_112356 Colored line: \"\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\u001b[0m\";", "line_num": 1, "path": "./tests/samples/square_oauth_secret", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI", "value_start": 36, "value_end": 86, "entropy": 4.75856 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "line_num": 3, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "line_num": 4, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "line_num": 5, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "value_start": 0, "value_end": 32, "entropy": 4.53891 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "line_num": 6, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "value_start": 0, "value_end": 107, "entropy": 5.24966 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "line_num": 7, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "value_start": 0, "value_end": 107, "entropy": 5.44092 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 8, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 107, "entropy": 5.50064 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "line_num": 9, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "value_start": 0, "value_end": 38, "entropy": 4.47135 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "line_num": 10, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "value_start": 0, "value_end": 38, "entropy": 4.82687 } ] }, { "rule": "Telegram Bot API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "line_num": 1, "path": "./tests/samples/telegram_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "value_start": 0, "value_end": 45, "entropy": 4.94174 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 18, "path": "./tests/samples/test2.eml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 18, "path": "./tests/samples/test2.eml", "info": "", "variable": "token in text", "variable_start": 0, "variable_end": 13, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "line_num": 1, "path": "./tests/samples/together", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "value_start": 0, "value_end": 50, "entropy": 5.13366 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "line_num": 2, "path": "./tests/samples/together", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "value_start": 0, "value_end": 50, "entropy": 5.16386 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_token = \"G1Re06G1BdgNseiJDN21Z094M\"", "line_num": 1, "path": "./tests/samples/token.toml", "info": "", "variable": "gi_reo_gi_token", "variable_start": 0, "variable_end": 15, "value": "G1Re06G1BdgNseiJDN21Z094M", "value_start": 19, "value_end": 44, "entropy": 4.13366 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo", "line_num": 2, "path": "./tests/samples/token.toml", "info": "", "variable": "DemoToken", "variable_start": 8, "variable_end": 17, "value": "Nxs094M3ed2s1Re0F4M3ed2GZ8M=", "value_start": 19, "value_end": 47, "entropy": 4.03915 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "tp_token_value=\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\"", "line_num": 4, "path": "./tests/samples/token.toml", "info": "", "variable": "tp_token_value", "variable_start": 0, "variable_end": 14, "value": "b035d48j9X2dfjF0hb9sd8Guf5hWu2ia", "value_start": 16, "value_end": 48, "entropy": 4.22641 } ] }, { "rule": "Tavily API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # TP", "line_num": 1, "path": "./tests/samples/tvly", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.84432 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SK4D2F64E2A108CD72F648B1984C3B5A13", "line_num": 1, "path": "./tests/samples/twilio_credentials_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SK4D2F64E2A108CD72F648B1984C3B5A13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AC4d2f64e2a108cd72f648b1984c3b5a13", "line_num": 2, "path": "./tests/samples/twilio_credentials_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AC4d2f64e2a108cd72f648b1984c3b5a13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');", "line_num": 1, "path": "./tests/samples/url_cred.js", "info": "", "variable": "dbconnection://", "variable_start": 32, "variable_end": 47, "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, "entropy": 3.58496 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", "line_num": 3, "path": "./tests/samples/url_cred.js", "info": "", "variable": "Credential", "variable_start": 38, "variable_end": 48, "value": "546DFS64N90P3AW7DX%2Fkeep%26cut", "value_start": 49, "value_end": 80, "entropy": 4.41372 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.006, "line_data_list": [ { "line": "// \"fp://no.host.real/any/path/to/nowhere/\",\"key\":\"f45VgF8jX79o@anydata.com\"", "line_num": 7, "path": "./tests/samples/url_cred.js", "info": "", "variable": "key", "variable_start": 45, "variable_end": 48, "value": "f45VgF8jX79o@anydata.com", "value_start": 51, "value_end": 75, "entropy": 4.30351 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "", "variable": "key", "variable_start": 36, "variable_end": 39, "value": "3487263-2384579834-234732875-345", "value_start": 40, "value_end": 72, "entropy": 2.97591 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "", "variable": "Credential", "variable_start": 6, "variable_end": 16, "value": "546DFS64N90P3AW7DX", "value_start": 17, "value_end": 35, "entropy": 3.83659 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", "line_num": 13, "path": "./tests/samples/url_cred.js", "info": "", "variable": "smtps://", "variable_start": 18, "variable_end": 26, "value": "FnD83JZs", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url3d = \"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\";", "line_num": 19, "path": "./tests/samples/url_cred.js", "info": "", "variable": "token", "variable_start": 65, "variable_end": 70, "value": "h1d3Me4ch534d801sl3jdk", "value_start": 73, "value_end": 95, "entropy": 3.75444 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if (password !== \"PaS5w0rD2#\"){", "line_num": 21, "path": "./tests/samples/url_cred.js", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "PaS5w0rD2#", "value_start": 18, "value_end": 28, "entropy": 3.32193 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "{\"line\": \"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\"}", "line_num": 25, "path": "./tests/samples/url_cred.js", "info": "", "variable": "mongodb://", "variable_start": 15, "variable_end": 25, "value": "p4Dsr8b", "value_start": 34, "value_end": 41, "entropy": 2.80735 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", "line_num": 1, "path": "./tests/samples/uuid", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.58954 } ] }, { "rule": "Vercel Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "line_num": 1, "path": "./tests/samples/vercel", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "value_start": 0, "value_end": 60, "entropy": 5.23581 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wxe191bc54fc7d529a", "line_num": 1, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wxe191bc54fc7d529a", "value_start": 0, "value_end": 18, "entropy": 3.72548 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx2274a335e18222d6", "line_num": 2, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx2274a335e18222d6", "value_start": 0, "value_end": 18, "entropy": 3.41383 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx4d82d07e3eb5ba84", "line_num": 3, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx4d82d07e3eb5ba84", "value_start": 0, "value_end": 18, "entropy": 3.61437 } ] }, { "rule": "X AI API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "line_num": 1, "path": "./tests/samples/xai", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "value_start": 0, "value_end": 84, "entropy": 5.35637 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\n DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\n 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\n AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\n BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\n caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\n EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "line_num": 3, "path": "./tests/samples/xml_data.xml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\n DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\n 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\n AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\n BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\n caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\n EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "value_start": 7, "value_end": 485, "entropy": 5.75738 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "token : \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\"", "line_num": 12, "path": "./tests/samples/xml_data.xml", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "value_start": 9, "value_end": 116, "entropy": 5.12458 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "line_num": 16, "path": "./tests/samples/xml_data.xml", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn", "value_start": 8, "value_end": 58, "entropy": 4.83327 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.857, "line_data_list": [ { "line": "password : cackle!", "line_num": 5, "path": "./tests/samples/xml_password.xml", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 11, "value_end": 18, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.01, "line_data_list": [ { "line": "password : peace_for_ukraine", "line_num": 9, "path": "./tests/samples/xml_password.xml", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "peace_for_ukraine", "value_start": 11, "value_end": 28, "entropy": 3.45482 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "password : Password for authorization\n BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", "line_num": 11, "path": "./tests/samples/xml_password.xml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d59-fa7e-beef-cafe-9129474bcd81", "value_start": 52, "value_end": 88, "entropy": 3.66606 } ] } ] ================================================ FILE: tests/data/output.json ================================================ [ { "rule": "1Password Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "line_num": 1, "path": "./tests/samples/1password", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv", "value_start": 0, "value_end": 656, "entropy": 5.94326 } ] }, { "rule": "BASE64 encoded PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==", "line_num": 1, "path": "./tests/samples/LS0t_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg", "value_start": 0, "value_end": 3078, "entropy": 5.49785 } ] }, { "rule": "Akamai Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "line_num": 1, "path": "./tests/samples/akamai", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3", "value_start": 3, "value_end": 41, "entropy": 4.15557 } ] }, { "rule": "Anthropic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "line_num": 1, "path": "./tests/samples/antrhropic", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew", "value_start": 0, "value_end": 107, "entropy": 5.42952 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_api = \"DvMB_glvwjlEQ_uqIyn8k\";", "line_num": 1, "path": "./tests/samples/api.toml", "info": "", "variable": "gi_reo_gi_api", "variable_start": 0, "variable_end": 13, "value": "DvMB_glvwjlEQ_uqIyn8k", "value_start": 17, "value_end": 38, "entropy": 4.1066 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "entropy": 5.77034 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "line_num": 2, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", "value_start": 20, "value_end": 213, "entropy": 5.78724 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "line_num": 3, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", "value_start": 22, "value_end": 216, "entropy": 5.76529 } ] }, { "rule": "Atlassian PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "line_num": 4, "path": "./tests/samples/atlassian_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", "value_start": 24, "value_end": 218, "entropy": 5.76679 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"kerberos_authentication\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\"", "line_num": 1, "path": "./tests/samples/auth.hs", "info": "", "variable": "kerberos_authentication", "variable_start": 1, "variable_end": 24, "value": "YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA", "value_start": 28, "value_end": 66, "entropy": 4.27373 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"authorization\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\"", "line_num": 2, "path": "./tests/samples/auth.hs", "info": "", "variable": "authorization", "variable_start": 1, "variable_end": 14, "value": "aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA", "value_start": 18, "value_end": 56, "entropy": 4.52399 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "headers = {authorization: /oauth_signature=\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\"/, content_type: 'application/json; charset=utf-8'}", "line_num": 3, "path": "./tests/samples/auth.hs", "info": "", "variable": "oauth_signature", "variable_start": 27, "variable_end": 42, "value": "JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D", "value_start": 44, "value_end": 76, "entropy": 4.53891 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "", "variable": "Authorization", "variable_start": 0, "variable_end": 13, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "line_num": 4, "path": "./tests/samples/auth.hs", "info": "", "variable": "NTLM", "variable_start": 15, "variable_end": 19, "value": "TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=", "value_start": 20, "value_end": 59, "entropy": 4.00235 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Basic Authorization", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\" http://localhost:8080/.", "line_num": 8, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Basic", "variable_start": 24, "variable_end": 29, "value": "R2hyZG5oYzpycWVpIGVuZ2xiZg==", "value_start": 30, "value_end": 58, "entropy": 4.20897 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Authorization", "variable_start": 9, "variable_end": 22, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "Bearer Authorization", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", "line_num": 9, "path": "./tests/samples/auth_n.template", "info": "", "variable": "Bearer", "variable_start": 24, "variable_end": 30, "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", "value_start": 31, "value_end": 65, "entropy": 4.53585 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A3T1DJ4IS97DLLTH2SZ3", "value_start": 56, "value_end": 76, "entropy": 3.82193 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 14, "value_end": 34, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3", "line_num": 1, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY45X", "value_start": 35, "value_end": 55, "entropy": 3.54644 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "line_num": 8, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t", "value_start": 0, "value_end": 48, "entropy": 4.88684 } ] }, { "rule": "Amazon Bedrock API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "line_num": 9, "path": "./tests/samples/aws_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42", "value_start": 0, "value_end": 128, "entropy": 5.61388 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY123\",", "line_num": 3, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY123", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\"", "line_num": 4, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY323", "value_start": 191, "value_end": 211, "entropy": 3.44644 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "X-Amz-Credential", "variable_start": 174, "variable_end": 190, "value": "AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy", "value_start": 191, "value_end": 251, "entropy": 4.6314 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "X-Amz-Key", "variable_start": 252, "variable_end": 261, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI", "value_start": 262, "value_end": 313, "entropy": 4.96135 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"request_url\": \"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\"", "line_num": 28, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gireogi323.s3.amazonaws.com", "value_start": 32, "value_end": 59, "entropy": 3.75416 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AwsSecretKey\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 52, "path": "./tests/samples/aws_multi.json", "info": "", "variable": "AwsSecretKey", "variable_start": 9, "variable_end": 21, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 25, "value_end": 76, "entropy": 4.96135 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AwsAccessID\": \"AKIAGIREOGIAWSKEY321\"", "line_num": 53, "path": "./tests/samples/aws_multi.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 24, "value_end": 44, "entropy": 3.54644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 }, { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"AccessKeyId\" : \"AKIA0ON7V2DD57PL3JXM\",", "line_num": 7, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "AccessKeyId", "variable_start": 5, "variable_end": 16, "value": "AKIA0ON7V2DD57PL3JXM", "value_start": 21, "value_end": 41, "entropy": 4.02193 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"SecretAccessKey\" : \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",", "line_num": 8, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "SecretAccessKey", "variable_start": 5, "variable_end": 20, "value": "RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1", "value_start": 25, "value_end": 65, "entropy": 4.67193 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " \"Token\" : \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",", "line_num": 9, "path": "./tests/samples/aws_multi.md", "info": "", "variable": "Token", "variable_start": 5, "variable_end": 10, "value": "J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI", "value_start": 15, "value_end": 66, "entropy": 4.96135 } ] }, { "rule": "AWS MWS Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", "line_num": 1, "path": "./tests/samples/aws_mws_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, "entropy": 4.55264 } ] }, { "rule": "AWS S3 Bucket", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "{\"url\" : \"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\"}", "line_num": 1, "path": "./tests/samples/aws_s3_bucket", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "circle-production-action-output.s3.amazonaws.com", "value_start": 18, "value_end": 66, "entropy": 4.02467 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "line_num": 1, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", "value_start": 0, "value_end": 1316, "entropy": 5.63018 } ] }, { "rule": "Azure Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "line_num": 2, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", "value_start": 0, "value_end": 1029, "entropy": 5.64141 } ] }, { "rule": "Azure Storage Account Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "line_num": 5, "path": "./tests/samples/azure_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==", "value_start": 2, "value_end": 90, "entropy": 4.22483 } ] }, { "rule": "Azure Secret Value", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "client_srt = \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\";", "line_num": 1, "path": "./tests/samples/azure_secret_value", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P", "value_start": 14, "value_end": 54, "entropy": 4.75306 } ] }, { "rule": "Bitbucket HTTP Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"bitbucket\" : \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\"", "line_num": 1, "path": "./tests/samples/bitbuckert_http_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l", "value_start": 15, "value_end": 64, "entropy": 4.94084 } ] }, { "rule": "Bitbucket App Password", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "line_num": 1, "path": "./tests/samples/bitbucket_app_password", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4", "value_start": 11, "value_end": 47, "entropy": 4.5934 } ] }, { "rule": "Bitbucket Repository Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "./tests/samples/bitbucket_repository_access_token", "info": "", "variable": "Bitbucket Repository Access Token", "variable_start": 1, "variable_end": 34, "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", "value_start": 39, "value_end": 231, "entropy": 5.75803 } ] }, { "rule": "Brevo API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/brevo", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 89, "entropy": 4.64688 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg", "line_num": 1, "path": "./tests/samples/cmd_credential", "info": "", "variable": "passphrase", "variable_start": 16, "variable_end": 26, "value": "N1DdkUD3E73", "value_start": 27, "value_end": 38, "entropy": 3.0958 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "mysql -u root --password Sne3sd8AZjq", "line_num": 2, "path": "./tests/samples/cmd_credential", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "Sne3sd8AZjq", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Domain 'localhost' -Password 'Sjdn43ss@!'", "line_num": 3, "path": "./tests/samples/cmd_credential", "info": "", "variable": "Password", "variable_start": 21, "variable_end": 29, "value": "Sjdn43ss@!", "value_start": 31, "value_end": 41, "entropy": 3.12193 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": "super-secret_token", "variable_start": 2, "variable_end": 20, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "line_num": 4, "path": "./tests/samples/cmd_credential", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1ace4d19-fa7e-b4e2-c3f0-9129474bcd81", "value_start": 21, "value_end": 57, "entropy": 3.77368 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " --oauth2-bearer \"eZs2fjkjD8hUcsQ37b8zHig==\" \\", "line_num": 7, "path": "./tests/samples/cmd_credential", "info": "", "variable": "oauth2-bearer", "variable_start": 6, "variable_end": 19, "value": "eZs2fjkjD8hUcsQ37b8zHig==", "value_start": 21, "value_end": 46, "entropy": 4.32386 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 0.918, "line_data_list": [ { "line": "ConvertTo-SecureString -String -Force dsjUE#$gds8s", "line_num": 1, "path": "./tests/samples/cmd_secure_string", "info": "", "variable": "ConvertTo-SecureString -String -Force", "variable_start": 0, "variable_end": 37, "value": "dsjUE#$gds8s", "value_start": 38, "value_end": 50, "entropy": 3.02206 } ] }, { "rule": "CMD ConvertTo-SecureString", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"ConvertTo-SecureString \\\"4yd21JKH~GE8dkd\\\"\"", "line_num": 2, "path": "./tests/samples/cmd_secure_string", "info": "", "variable": "ConvertTo-SecureString", "variable_start": 1, "variable_end": 23, "value": "4yd21JKH~GE8dkd", "value_start": 26, "value_end": 41, "entropy": 3.5899 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gi_reo_gi_credential = \"K2u6mFw8wJOsAf\"", "line_num": 1, "path": "./tests/samples/credential.hs", "info": "", "variable": "gi_reo_gi_credential", "variable_start": 0, "variable_end": 20, "value": "K2u6mFw8wJOsAf", "value_start": 24, "value_end": 38, "entropy": 3.6645 } ] }, { "rule": "CURL User Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "curl -X PUT -u \"admin:dG9rZW4g\" https://127.0.0.1 # TP", "line_num": 1, "path": "./tests/samples/curl_user_password", "info": "", "variable": "curl", "variable_start": 0, "variable_end": 4, "value": "dG9rZW4g", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "DeepSeek API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": ">>>\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\u001b[0m<<<", "line_num": 1, "path": "./tests/samples/deepseek", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-615ef152bf865a131f88b23571dc4ee6", "value_start": 8, "value_end": 43, "entropy": 3.85416 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';", "line_num": 1, "path": "./tests/samples/digital_ocean_oauth_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c", "value_start": 14, "value_end": 85, "entropy": 4.05874 } ] }, { "rule": "Digital Ocean Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "line_num": 1, "path": "./tests/samples/digital_ocean_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "value_start": 0, "value_end": 71, "entropy": 3.6568 } ] }, { "rule": "Discord Bot Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "line_num": 1, "path": "./tests/samples/discord_bot_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "value_start": 0, "value_end": 72, "entropy": 5.16257 } ] }, { "rule": "Discord Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "line_num": 1, "path": "./tests/samples/discord_webhook", "info": "", "variable": "discordapp.com/api/webhooks", "variable_start": 10, "variable_end": 37, "value": "/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h", "value_start": 37, "value_end": 125, "entropy": 5.23454 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"UserKeyword\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\"", "line_num": 5, "path": "./tests/samples/doc_credentials_n", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1328E04-88B6-4E2A-A5C0-A4D9B21754C4", "value_start": 16, "value_end": 52, "entropy": 3.8055 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "line_num": 2, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "key", "variable_start": 11, "variable_end": 14, "value": "ZAQWS-XCDER-VBGTR-FRTGU-KLMNX", "value_start": 17, "value_end": 46, "entropy": 4.21126 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "password:!Dd5G4s9", "line_num": 3, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "!Dd5G4s9", "value_start": 9, "value_end": 17, "entropy": 3.0 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "line_num": 4, "path": "./tests/samples/doc_credentials_p", "info": "", "variable": "LONG_CREDENTIAL", "variable_start": 0, "variable_end": 15, "value": "AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==", "value_start": 17, "value_end": 5485, "entropy": 5.99409 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "if SECRET := getenv(\"CEKPET\", \"GEHEIMN1S\"):", "line_num": 1, "path": "./tests/samples/doc_get_p", "info": "", "variable": "SECRET", "variable_start": 3, "variable_end": 9, "value": "GEHEIMN1S", "value_start": 31, "value_end": 40, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "PASSWORD = os.environ.get(\"PASSWORD\") or \"at5G6zi!m\"", "line_num": 5, "path": "./tests/samples/doc_get_p", "info": "", "variable": "PASSWORD", "variable_start": 0, "variable_end": 8, "value": "at5G6zi!m", "value_start": 42, "value_end": 51, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.966, "line_data_list": [ { "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.971, "line_data_list": [ { "line": "ID:master PW:dipPr11Gg!", "line_num": 2, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr11Gg!", "value_start": 13, "value_end": 23, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "ANYID:master PW:dipPr12Gg!", "line_num": 3, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 13, "variable_end": 15, "value": "dipPr12Gg!", "value_start": 16, "value_end": 26, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Username:master Password:dipPr13Gg!", "line_num": 4, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr13Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:master,password:dipPr14Gg!", "line_num": 5, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr14Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.977, "line_data_list": [ { "line": "ID:master/PW:dipPr15Gg!", "line_num": 6, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 10, "variable_end": 12, "value": "dipPr15Gg!", "value_start": 13, "value_end": 23, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:master password:dipPr16Gg!", "line_num": 7, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "dipPr16Gg!", "value_start": 19, "value_end": 29, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user:master password:dipPr17Gg!", "line_num": 8, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr17Gg!", "value_start": 21, "value_end": 31, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "username:master,password:dipPr19Gg!", "line_num": 10, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr19Gg!", "value_start": 25, "value_end": 35, "entropy": 3.32193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.986, "line_data_list": [ { "line": "username:master pwd:dipPr110Gg!", "line_num": 11, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 16, "variable_end": 19, "value": "dipPr110Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "ANYid:master,password:dipPr111Gg!", "line_num": 12, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr111Gg!", "value_start": 22, "value_end": 33, "entropy": 3.02717 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.965, "line_data_list": [ { "line": "ID:master PWD:dipPr112Gg!", "line_num": 13, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr112Gg!", "value_start": 14, "value_end": 25, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user id:master password:dipPr113Gg!", "line_num": 14, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user:master,password:dipPr114Gg!", "line_num": 15, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr114Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user=master,password=dipPr115Gg!", "line_num": 16, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr115Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "username=master password=dipPr116Gg!", "line_num": 17, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr116Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "User name:master Password:dipPr117Gg!", "line_num": 18, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr117Gg!", "value_start": 26, "value_end": 37, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "username=master,password=dipPr118Gg!", "line_num": 19, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr118Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user=master --password=dipPr119Gg!", "line_num": 20, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr119Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "user=master passwd=dipPr120Gg!", "line_num": 21, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "dipPr120Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr121Gg! password:dipPr121Gg!", "line_num": 22, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr121Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "id:master pass:dipPr122Gg!", "line_num": 23, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr122Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "user:master pw:dipPr124Gg!", "line_num": 25, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr124Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Username:master/Password:dipPr125Gg!", "line_num": 26, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr125Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "userId:master,password:dipPr126Gg!", "line_num": 27, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr126Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--user master --password dipPr127Gg!", "line_num": 28, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 16, "variable_end": 24, "value": "dipPr127Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!", "line_num": 29, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 34, "variable_end": 42, "value": "dipPr128Gg!", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYid:master,pw:dipPr129Gg!", "line_num": 30, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr129Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "user:master pwd:dipPr130Gg!", "line_num": 31, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr130Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Login:dipPr131Gg! Pwd:dipPr131Gg!", "line_num": 32, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Pwd", "variable_start": 18, "variable_end": 21, "value": "dipPr131Gg!", "value_start": 22, "value_end": 33, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYID:master Password:dipPr132Gg!", "line_num": 33, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 13, "variable_end": 21, "value": "dipPr132Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "-Username:master -Password:dipPr133Gg!", "line_num": 34, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 18, "variable_end": 26, "value": "dipPr133Gg!", "value_start": 27, "value_end": 38, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr134Gg! pw:dipPr134Gg!", "line_num": 35, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr134Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user id:master user pw:dipPr135Gg!", "line_num": 36, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 20, "variable_end": 22, "value": "dipPr135Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "user_name=master password=dipPr136Gg!", "line_num": 37, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 17, "variable_end": 25, "value": "dipPr136Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--username master --password dipPr137Gg!", "line_num": 38, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr137Gg!", "value_start": 29, "value_end": 40, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANYlogin:master,ANYpassword:dipPr138Gg!", "line_num": 39, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 16, "variable_end": 27, "value": "dipPr138Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYusername=master ANYpassword=dipPr139Gg!", "line_num": 40, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 19, "variable_end": 30, "value": "dipPr139Gg!", "value_start": 31, "value_end": 42, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "ID:master,PWD:dipPr140Gg!", "line_num": 41, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 10, "variable_end": 13, "value": "dipPr140Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "ID:master/PASS:dipPr141Gg!", "line_num": 42, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PASS", "variable_start": 10, "variable_end": 14, "value": "dipPr141Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "account:master passwd:dipPr142Gg!", "line_num": 43, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "passwd", "variable_start": 15, "variable_end": 21, "value": "dipPr142Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "login:master password:dipPr143Gg!", "line_num": 44, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "dipPr143Gg!", "value_start": 22, "value_end": 33, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "user=master,pass=dipPr144Gg!", "line_num": 45, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr144Gg!", "value_start": 17, "value_end": 28, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password:dipPr145Gg! username:master", "line_num": 46, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "dipPr145Gg!", "value_start": 9, "value_end": 20, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Login as:master Password:dipPr146Gg!", "line_num": 47, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 16, "variable_end": 24, "value": "dipPr146Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:master,pass:dipPr147Gg!", "line_num": 48, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 10, "variable_end": 14, "value": "dipPr147Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id:master pw:dipPr148Gg!", "line_num": 49, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 10, "variable_end": 12, "value": "dipPr148Gg!", "value_start": 13, "value_end": 24, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", "line_num": 50, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 23, "variable_end": 25, "value": "dipPr149Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "-id:master -pw:dipPr151Gg!", "line_num": 52, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "dipPr151Gg!", "value_start": 15, "value_end": 26, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "username:master pw:dipPr152Gg!", "line_num": 53, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr152Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "-User Name:master -Password:dipPr154Gg!", "line_num": 55, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 19, "variable_end": 27, "value": "dipPr154Gg!", "value_start": 28, "value_end": 39, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "account:dipPr155Gg!/password:dipPr155Gg!", "line_num": 56, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "dipPr155Gg!", "value_start": 29, "value_end": 40, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANYuser=master ANY_pass=dipPr156Gg!", "line_num": 57, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_pass", "variable_start": 15, "variable_end": 23, "value": "dipPr156Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYUser:master password:dipPr157Gg!", "line_num": 58, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "dipPr157Gg!", "value_start": 24, "value_end": 35, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "user:master,pwd:dipPr158Gg!", "line_num": 59, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr158Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY_username:master,ANY_password:dipPr159Gg!", "line_num": 60, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 20, "variable_end": 32, "value": "dipPr159Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYusername:master,ANY_password:dipPr160Gg!", "line_num": 61, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 19, "variable_end": 31, "value": "dipPr160Gg!", "value_start": 32, "value_end": 43, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANY_USER=master ANY_PASS=dipPr161Gg!", "line_num": 62, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY_PASS", "variable_start": 16, "variable_end": 24, "value": "dipPr161Gg!", "value_start": 25, "value_end": 36, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "User Account:master User password:dipPr162Gg!", "line_num": 63, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 25, "variable_end": 33, "value": "dipPr162Gg!", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", "line_num": 64, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PWD", "variable_start": 34, "variable_end": 37, "value": "dipPr163Gg!", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "userid=master password=dipPr164Gg!", "line_num": 65, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 14, "variable_end": 22, "value": "dipPr164Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-username=master ANY-password=dipPr165Gg!", "line_num": 66, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "ANY-password", "variable_start": 20, "variable_end": 32, "value": "dipPr165Gg!", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "username:master pass:dipPr166Gg!", "line_num": 67, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 16, "variable_end": 20, "value": "dipPr166Gg!", "value_start": 21, "value_end": 32, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "user=master pwd=dipPr168Gg!", "line_num": 69, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr168Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.981, "line_data_list": [ { "line": "Name:master,PW:dipPr169Gg!", "line_num": 70, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "dipPr169Gg!", "value_start": 15, "value_end": 26, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "user:master pass:dipPr172Gg!", "line_num": 73, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pass", "variable_start": 12, "variable_end": 16, "value": "dipPr172Gg!", "value_start": 17, "value_end": 28, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "user=master password=dipPr174Gg!", "line_num": 75, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr174Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Host name:master/Password:dipPr175Gg!", "line_num": 76, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 17, "variable_end": 25, "value": "dipPr175Gg!", "value_start": 26, "value_end": 37, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "role:master,password:dipPr176Gg!", "line_num": 77, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr176Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "Wifi Name:master,PW:dipPr177Gg!", "line_num": 78, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "dipPr177Gg!", "value_start": 20, "value_end": 31, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ID:master/Password:dipPr178Gg!", "line_num": 79, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 10, "variable_end": 18, "value": "dipPr178Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "name:master,password:dipPr179Gg!", "line_num": 80, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "dipPr179Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Loging:master Password:dipPr180Gg!", "line_num": 81, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Password", "variable_start": 14, "variable_end": 22, "value": "dipPr180Gg!", "value_start": 23, "value_end": 34, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Loging:master Pwd:dipPr181Gg!", "line_num": 82, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "Pwd", "variable_start": 14, "variable_end": 17, "value": "dipPr181Gg!", "value_start": 18, "value_end": 29, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "id:master,default pw:dipPr182Gg!", "line_num": 83, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 18, "variable_end": 20, "value": "dipPr182Gg!", "value_start": 21, "value_end": 32, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "id/pw id:master pw:dipPr185Gg!", "line_num": 86, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr185Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "user:master,pwd:dipPr186Gg!", "line_num": 87, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pwd", "variable_start": 12, "variable_end": 15, "value": "dipPr186Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "username:master/pw:dipPr188Gg!", "line_num": 89, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr188Gg!", "value_start": 19, "value_end": 30, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "username:master pw:dipPr189Gg!", "line_num": 90, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 16, "variable_end": 18, "value": "dipPr189Gg!", "value_start": 19, "value_end": 30, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.947, "line_data_list": [ { "line": "PW:dipPr190Gg! ID:master", "line_num": 91, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "PW", "variable_start": 0, "variable_end": 2, "value": "dipPr190Gg!", "value_start": 3, "value_end": 14, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", "line_num": 95, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 13, "variable_end": 15, "value": "dipPr194Gg!", "value_start": 16, "value_end": 27, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "id: master pw:dipPr197Gg!", "line_num": 98, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 11, "variable_end": 13, "value": "dipPr197Gg!", "value_start": 14, "value_end": 25, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "id:master@example.com,pw:dipPr198Gg!", "line_num": 99, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "dipPr198Gg!", "value_start": 25, "value_end": 36, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.941, "line_data_list": [ { "line": "id:master@example.com,pw:IHQSB1GG!", "line_num": 102, "path": "./tests/samples/doc_id_pair_passwd_pair", "info": "", "variable": "pw", "variable_start": 22, "variable_end": 24, "value": "IHQSB1GG!", "value_start": 25, "value_end": 34, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.882, "line_data_list": [ { "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", "line_num": 11, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "PW", "variable_start": 22, "variable_end": 24, "value": "iPp10@GRq", "value_start": 25, "value_end": 34, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.651, "line_data_list": [ { "line": "ID/Password=master/iPp27@GRq", "line_num": 28, "path": "./tests/samples/doc_id_passwd_pair", "info": "", "variable": "Password", "variable_start": 3, "variable_end": 11, "value": "master/iPp27@GRq", "value_start": 12, "value_end": 28, "entropy": 4.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "Password:Prl23Db#@", "line_num": 1, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "pw:Prl23Db#@", "line_num": 3, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pw", "variable_start": 0, "variable_end": 2, "value": "Prl23Db#@", "value_start": 3, "value_end": 12, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.987, "line_data_list": [ { "line": "Password=Prl23Db#@", "line_num": 4, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "pwd:Prl23Db#@", "line_num": 5, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "Prl23Db#@", "value_start": 4, "value_end": 13, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password=Prl23Db#@", "line_num": 8, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "pass:Prl23Db#@", "line_num": 10, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pass", "variable_start": 0, "variable_end": 4, "value": "Prl23Db#@", "value_start": 5, "value_end": 14, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY-password=Prl23Db#@", "line_num": 11, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY-password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32 password:Prl23Db#@", "line_num": 14, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 19, "variable_end": 27, "value": "Prl23Db#@", "value_start": 28, "value_end": 37, "entropy": 3.16993 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "--Password Prl23Db#@", "line_num": 15, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 2, "variable_end": 10, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "ANY_PW:Prl23Db#@", "line_num": 17, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY_PW", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "default password:Prl23Db#@", "line_num": 18, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "Prl23Db#@", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"password\":\"Prl23Db#@\"", "line_num": 21, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 1, "variable_end": 9, "value": "Prl23Db#@", "value_start": 12, "value_end": 21, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "Passwd:Prl23Db#@ Prl23Db#@", "line_num": 23, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Passwd", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "PW:Prl23Db#@,password:Prl23Db#@", "line_num": 24, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 13, "variable_end": 21, "value": "Prl23Db#@", "value_start": 22, "value_end": 31, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "password:Prl23Db#@,\ube44\ubc88:Prl23Db#@", "line_num": 25, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.989, "line_data_list": [ { "line": "passwd=Prl23Db#@", "line_num": 26, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "passwd", "variable_start": 0, "variable_end": 6, "value": "Prl23Db#@", "value_start": 7, "value_end": 16, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "password:Prl23Db#@, paasword:Prl23Db#@", "line_num": 30, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.988, "line_data_list": [ { "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", "line_num": 31, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", "line_num": 31, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANYPassword", "variable_start": 19, "variable_end": 30, "value": "Prl23Db#@", "value_start": 31, "value_end": 40, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.983, "line_data_list": [ { "line": "Password:Prl23Db#@,pwd=Prl23Db#@", "line_num": 32, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "Password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.926, "line_data_list": [ { "line": "Password:Prl23Db#@,pwd=Prl23Db#@", "line_num": 32, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "pwd", "variable_start": 19, "variable_end": 22, "value": "Prl23Db#@", "value_start": 23, "value_end": 32, "entropy": 3.16993 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-password \"Prl23Db#@\"", "line_num": 33, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 1, "variable_end": 9, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password:Prl23Db#@", "line_num": 34, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANY_password", "variable_start": 0, "variable_end": 12, "value": "Prl23Db#@", "value_start": 13, "value_end": 22, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "--password=Prl23Db#@", "line_num": 37, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 2, "variable_end": 10, "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "root/Prl23Db#@,root password:Prl23Db#@", "line_num": 38, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 20, "variable_end": 28, "value": "Prl23Db#@", "value_start": 29, "value_end": 38, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@", "line_num": 40, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "Prl23Db#@", "value_start": 48, "value_end": 57, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "Prl23Db#@:password:Prl23Db#@", "line_num": 41, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "Prl23Db#@", "value_start": 19, "value_end": 28, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ANYpassword=Prl23Db#@", "line_num": 45, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "ANYpassword", "variable_start": 0, "variable_end": 11, "value": "Prl23Db#@", "value_start": 12, "value_end": 21, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "passwords:Prl23Db#@", "line_num": 46, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "passwords", "variable_start": 0, "variable_end": 9, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.994, "line_data_list": [ { "line": "password=>Prl23Db#@", "line_num": 48, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "Prl23Db#@", "value_start": 10, "value_end": 19, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.984, "line_data_list": [ { "line": "# password: keep empty", "line_num": 56, "path": "./tests/samples/doc_passwd_pair", "info": "", "variable": "password", "variable_start": 2, "variable_end": 10, "value": "keep", "value_start": 12, "value_end": 16, "entropy": 1.5 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY-Token:AIhq5Xyb1Gga9Q0", "line_num": 1, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY-Token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q0", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token:AIhq5Xyb1Gga9Q2", "line_num": 3, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "AIhq5Xyb1Gga9Q2", "value_start": 6, "value_end": 21, "entropy": 3.90689 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "KEY", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", "line_num": 4, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "SECRET KEY", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q3", "value_start": 11, "value_end": 26, "entropy": 3.90689 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret=AIhq5Xyb1Gga9Q4", "line_num": 5, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q4", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "CMD Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--token AIhq5Xyb1Gga9Q5", "line_num": 6, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "token", "variable_start": 2, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q5", "value_start": 8, "value_end": 23, "entropy": 3.77356 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret:AIhq5Xyb1Gga9Q6", "line_num": 7, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 0, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q6", "value_start": 7, "value_end": 22, "entropy": 3.90689 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_token=AIhq5Xyb1Gga9Q7", "line_num": 8, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_token", "variable_start": 0, "variable_end": 9, "value": "AIhq5Xyb1Gga9Q7", "value_start": 10, "value_end": 25, "entropy": 3.90689 } ] }, { "rule": "CMD Secret", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-secret AIhq5Xyb1Gga9Q10", "line_num": 11, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 1, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q10", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY.secret=AIhq5Xyb1Gga9Q19", "line_num": 20, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY.secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q19", "value_start": 11, "value_end": 27, "entropy": 3.75 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "--secret=AIhq5Xyb1Gga9Q21", "line_num": 22, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret", "variable_start": 2, "variable_end": 8, "value": "AIhq5Xyb1Gga9Q21", "value_start": 9, "value_end": 25, "entropy": 3.875 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_secret:AIhq5Xyb1Gga9Q22", "line_num": 23, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q22", "value_start": 11, "value_end": 27, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-Token:AIhq5Xyb1Gga9Q23", "line_num": 24, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Token", "variable_start": 1, "variable_end": 6, "value": "AIhq5Xyb1Gga9Q23", "value_start": 7, "value_end": 23, "entropy": 4.0 } ] }, { "rule": "API", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "API Secret", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "API Secret:AIhq5Xyb1Gga9Q24", "line_num": 25, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Secret", "variable_start": 4, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q24", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access key:AIhq5Xyb1Gga9Q26", "line_num": 27, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q26", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Key", "variable_start": 7, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Secret Key:AIhq5Xyb1Gga9Q27", "line_num": 28, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Secret Key", "variable_start": 0, "variable_end": 10, "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, "value_end": 27, "entropy": 4.0 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_key=AIhq5Xyb1Gga9Q29", "line_num": 30, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_key", "variable_start": 0, "variable_end": 7, "value": "AIhq5Xyb1Gga9Q29", "value_start": 8, "value_end": 24, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", "line_num": 31, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "secret-ANYkey", "variable_start": 0, "variable_end": 13, "value": "AIhq5Xyb1Gga9Q30", "value_start": 14, "value_end": 30, "entropy": 4.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", "line_num": 32, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "ANY_token", "variable_start": 24, "variable_end": 33, "value": "AIhq5Xyb1Gga9Q31", "value_start": 34, "value_end": 50, "entropy": 3.875 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "access_token:AIhq5Xyb1Gga9Q33", "line_num": 34, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "access_token", "variable_start": 0, "variable_end": 12, "value": "AIhq5Xyb1Gga9Q33", "value_start": 13, "value_end": 29, "entropy": 3.875 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "key", "variable_start": 15, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Auth", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Authentication key:AIhq5Xyb1Gga9Q35", "line_num": 36, "path": "./tests/samples/doc_secret_pair", "info": "", "variable": "Authentication key", "variable_start": 0, "variable_end": 18, "value": "AIhq5Xyb1Gga9Q35", "value_start": 19, "value_end": 35, "entropy": 3.875 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 3, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.964, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", "line_num": 4, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", "line_num": 6, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", "line_num": 7, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 11, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 53, "variable_end": 61, "value": "IhqSb1Gg", "value_start": 62, "value_end": 70, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", "line_num": 15, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 25, "variable_end": 28, "value": "IhqSb1Gg", "value_start": 29, "value_end": 37, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32(pw:IhqSb1Gg)", "line_num": 17, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32/pw:IhqSb1Gg", "line_num": 19, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", "line_num": 20, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 39, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.97, "line_data_list": [ { "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", "line_num": 21, "path": "./tests/samples/doc_various", "info": "", "variable": "PWD", "variable_start": 43, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 22, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 42, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", "line_num": 23, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 37, "variable_end": 39, "value": "IhqSb1Gg", "value_start": 40, "value_end": 48, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", "line_num": 24, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 25, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 41, "variable_end": 49, "value": "IhqSb1Gg", "value_start": 50, "value_end": 58, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", "line_num": 28, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 39, "variable_end": 47, "value": "IhqSb1Gg", "value_start": 48, "value_end": 56, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "ANY_password,default:IhqSb1Gg", "line_num": 31, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_password,default", "variable_start": 0, "variable_end": 20, "value": "IhqSb1Gg", "value_start": 21, "value_end": 29, "entropy": 3.0 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "Key(ANYSecret):IhqSb1Gg", "line_num": 32, "path": "./tests/samples/doc_various", "info": "", "variable": "ANYSecret)", "variable_start": 4, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "98.76.54.32 ANY_PW:IhqSb1Gg", "line_num": 34, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_PW", "variable_start": 12, "variable_end": 18, "value": "IhqSb1Gg", "value_start": 19, "value_end": 27, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.995, "line_data_list": [ { "line": "98.76.54.32(ID/PW:IhqSb1Gg)", "line_num": 36, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 15, "variable_end": 17, "value": "IhqSb1Gg", "value_start": 18, "value_end": 26, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", "line_num": 38, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 26, "variable_end": 29, "value": "IhqSb1Gg", "value_start": 30, "value_end": 38, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "password for master:IhqSb1Gg", "line_num": 43, "path": "./tests/samples/doc_various", "info": "", "variable": "password for master", "variable_start": 0, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.992, "line_data_list": [ { "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "./tests/samples/doc_various", "info": "", "variable": "ANYpw", "variable_start": 8, "variable_end": 13, "value": "IhqSb1Ga", "value_start": 14, "value_end": 22, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", "line_num": 47, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", "line_num": 51, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", "line_num": 56, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 25, "variable_end": 27, "value": "IhqSb1Gg", "value_start": 28, "value_end": 36, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", "line_num": 61, "path": "./tests/samples/doc_various", "info": "", "variable": "ANY_pwd", "variable_start": 14, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Acount name:xxxx Initial Password:IhqSb1Gg", "line_num": 62, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 25, "variable_end": 33, "value": "IhqSb1Gg", "value_start": 34, "value_end": 42, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "Access wifi:xxxx(PW:IhqSb1Gg)", "line_num": 63, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 17, "variable_end": 19, "value": "IhqSb1Gg", "value_start": 20, "value_end": 28, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "-User:master -PasswordANY:IhqSb1Gg", "line_num": 66, "path": "./tests/samples/doc_various", "info": "", "variable": "PasswordANY", "variable_start": 14, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", "line_num": 73, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "master@98.76.54.32,PW:IhqSb1Gg", "line_num": 74, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 19, "variable_end": 21, "value": "IhqSb1Gg", "value_start": 22, "value_end": 30, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "98.76.54.32 pw:IhqSb1Gg", "line_num": 75, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "config:xxxx,PW:IhqSb1Gg", "line_num": 78, "path": "./tests/samples/doc_various", "info": "", "variable": "PW", "variable_start": 12, "variable_end": 14, "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 82, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", "line_num": 83, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 35, "variable_end": 37, "value": "IhqSb1Gg", "value_start": 38, "value_end": 46, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 84, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", "line_num": 85, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", "line_num": 87, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", "line_num": 90, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 41, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", "line_num": 93, "path": "./tests/samples/doc_various", "info": "", "variable": "pwd", "variable_start": 41, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", "line_num": 94, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 37, "variable_end": 45, "value": "IhqSb1Gg", "value_start": 46, "value_end": 54, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", "line_num": 96, "path": "./tests/samples/doc_various", "info": "", "variable": "Password", "variable_start": 36, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", "line_num": 97, "path": "./tests/samples/doc_various", "info": "", "variable": "pass", "variable_start": 37, "variable_end": 41, "value": "IhqSb1Gg", "value_start": 42, "value_end": 50, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", "line_num": 100, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 40, "variable_end": 42, "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", "line_num": 101, "path": "./tests/samples/doc_various", "info": "", "variable": "pass", "variable_start": 40, "variable_end": 44, "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", "line_num": 102, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 35, "variable_end": 43, "value": "IhqSb1Gg", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", "line_num": 104, "path": "./tests/samples/doc_various", "info": "", "variable": "password", "variable_start": 40, "variable_end": 48, "value": "IhqSb1Gg", "value_start": 49, "value_end": 57, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", "line_num": 105, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 44, "variable_end": 46, "value": "IhqSb1Gg", "value_start": 47, "value_end": 55, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", "line_num": 106, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 36, "variable_end": 38, "value": "IhqSb1Gg", "value_start": 39, "value_end": 47, "entropy": 3.0 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", "line_num": 108, "path": "./tests/samples/doc_various", "info": "", "variable": "pw", "variable_start": 23, "variable_end": 25, "value": "IhqSb1Gg", "value_start": 26, "value_end": 34, "entropy": 3.0 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "line_num": 1, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0", "value_start": 10, "value_end": 46, "entropy": 4.68354 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "line_num": 2, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123", "value_start": 10, "value_end": 46, "entropy": 3.89106 } ] }, { "rule": "Docker Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "line_num": 3, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-", "value_start": 10, "value_end": 51, "entropy": 4.78414 } ] }, { "rule": "Docker Swarm Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "line_num": 4, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1", "value_start": 10, "value_end": 95, "entropy": 5.06757 } ] }, { "rule": "Docker Swarm Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "line_num": 6, "path": "./tests/samples/docker", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4", "value_start": 10, "value_end": 62, "entropy": 4.95515 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " ", "line_num": 13, "path": "./tests/samples/drawio", "info": "", "variable": "Password", "variable_start": 146, "variable_end": 154, "value": "Dw7^&amp;nd&lt;dj", "value_start": 162, "value_end": 187, "entropy": 3.59327 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 13, "path": "./tests/samples/drawio", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-b2e4-1afe-9129474bcd81", "value_start": 100, "value_end": 136, "entropy": 3.60702 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": " ", "line_num": 16, "path": "./tests/samples/drawio", "info": "", "variable": "textpassword", "variable_start": 46, "variable_end": 58, "value": "Df34D&", "value_start": 60, "value_end": 69, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": " ", "line_num": 34, "path": "./tests/samples/drawio", "info": "", "variable": "pass", "variable_start": 35, "variable_end": 39, "value": "Dsfgh%$d&", "value_start": 41, "value_end": 53, "entropy": 3.58496 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " ", "line_num": 45, "path": "./tests/samples/drawio", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ce49dba1-e4fe-b2a7-4ffa-132bcd819474", "value_start": 52, "value_end": 88, "entropy": 3.68703 } ] }, { "rule": "Dropbox API secret (long term)", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", "line_num": 1, "path": "./tests/samples/dropbox_api_secret_long_term", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", "value_start": 9, "value_end": 73, "entropy": 4.89362 } ] }, { "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", "line_num": 1, "path": "./tests/samples/dropbox_app_secret", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wpv1jq9xwanbn3n", "value_start": 24, "value_end": 39, "entropy": 3.45656 } ] }, { "rule": "Dropbox OAuth2 API Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", "line_num": 1, "path": "./tests/samples/dropbox_oauth_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", "value_start": 15, "value_end": 153, "entropy": 5.61894 } ] }, { "rule": "Dynatrace API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, "path": "./tests/samples/dynatrace_api.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "value_start": 0, "value_end": 96, "entropy": 4.93241 } ] }, { "rule": "Facebook Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.964, "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "./tests/samples/facebook_key", "info": "", "variable": "GI_REO_GI_FACEBOOK_TOKEN", "variable_start": 0, "variable_end": 24, "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, "value_end": 115, "entropy": 4.93612 } ] }, { "rule": "Facebook App Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "line_num": 2, "path": "./tests/samples/facebook_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "value_start": 0, "value_end": 44, "entropy": 4.60694 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "line_num": 1, "path": "./tests/samples/figma", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO", "value_start": 0, "value_end": 45, "entropy": 4.98619 } ] }, { "rule": "Figma Personal Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "line_num": 2, "path": "./tests/samples/figma", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl", "value_start": 0, "value_end": 45, "entropy": 4.85286 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test-app-domain-42.firebaseapp.com", "line_num": 1, "path": "./tests/samples/firebase_domain", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test-app-domain-42.firebaseapp.com", "value_start": 0, "value_end": 34, "entropy": 3.98423 } ] }, { "rule": "Firebase Domain", "severity": "info", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "test2.io.firebaseio.com", "line_num": 2, "path": "./tests/samples/firebase_domain", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "test2.io.firebaseio.com", "value_start": 0, "value_end": 23, "entropy": 3.52271 } ] }, { "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", "line_num": 1, "path": "./tests/samples/github_classic_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ghp_00000000000000000000000000000004WZ4EQ", "value_start": 0, "value_end": 41, "entropy": 1.56292 } ] }, { "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/github_fine_granted_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 93, "entropy": 5.41519 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token", "line_num": 2, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP", "value_start": 0, "value_end": 39, "entropy": 4.59259 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret", "line_num": 3, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc", "value_start": 0, "value_end": 70, "entropy": 4.0466 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token", "line_num": 4, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gldt-9BeUoeWu2V9uUS3uLoMy", "value_start": 0, "value_end": 25, "entropy": 4.13366 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token", "line_num": 5, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrt-2CR8_eVxiio-1QmzPZwa", "value_start": 0, "value_end": 25, "entropy": 4.48386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "line_num": 6, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-1375_cgpAsnEmP-79kcfRLyK_", "value_start": 0, "value_end": 31, "entropy": 4.54275 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token", "line_num": 7, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glcbt-0_c1k_AsgyRp4mP-Kcn8fL", "value_start": 0, "value_end": 28, "entropy": 4.42325 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token", "line_num": 8, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", "value_start": 0, "value_end": 46, "entropy": 3.96956 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glft-Aafqn5A31G-2VipZMh28 # Feed token", "line_num": 9, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glft-Aafqn5A31G-2VipZMh28", "value_start": 0, "value_end": 25, "entropy": 4.32386 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token", "line_num": 10, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glimt-1jpqzsnw2n71om0r9kgt06os3", "value_start": 0, "value_end": 31, "entropy": 4.43807 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token", "line_num": 11, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg", "value_start": 0, "value_end": 58, "entropy": 5.18979 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies", "line_num": 12, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "_gitlab_session=8d2a78c080a3af1e6a4677be474432f2", "value_start": 0, "value_end": 48, "entropy": 4.32185 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsoat-971om0ecn5A386r9k481 # SCIM Tokens", "line_num": 13, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsoat-971om0ecn5A386r9k481", "value_start": 0, "value_end": 27, "entropy": 4.45859 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token", "line_num": 14, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glffct-AnRWYdo3Si_Xm2Q6n7zu", "value_start": 0, "value_end": 27, "entropy": 4.60674 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token", "line_num": 15, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr", "value_start": 0, "value_end": 47, "entropy": 5.18204 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token", "line_num": 16, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ", "value_start": 0, "value_end": 38, "entropy": 4.70175 } ] }, { "rule": "Gitlab Prefix Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token", "line_num": 18, "path": "./tests/samples/gitlab_prefix_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", "value_start": 0, "value_end": 29, "entropy": 4.58212 } ] }, { "rule": "Google API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key", "line_num": 1, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AIzaGiReoG-Cr0ckleCr0ckle12315618_12315", "value_start": 0, "value_end": 39, "entropy": 4.35298 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # Google OAuth Secret", "line_num": 2, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 35, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token", "line_num": 3, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S", "value_start": 0, "value_end": 51, "entropy": 5.01537 } ] }, { "rule": "Google OAuth Refresh Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token", "line_num": 4, "path": "./tests/samples/google_creds", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_", "value_start": 0, "value_end": 102, "entropy": 5.43821 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "line_num": 2, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "value_start": 0, "value_end": 72, "entropy": 4.80827 }, { "line": "4L2QMyTm6Rr0o46ytGiReoG1", "line_num": 4, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4L2QMyTm6Rr0o46ytGiReoG1", "value_start": 0, "value_end": 24, "entropy": 4.08496 } ] }, { "rule": "Google Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", "value_start": 6, "value_end": 78, "entropy": 4.80827 }, { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Google OAuth Secret", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", "line_num": 18, "path": "./tests/samples/google_multi", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 90, "value_end": 125, "entropy": 4.67214 } ] }, { "rule": "Grafana Access Policy Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", "line_num": 1, "path": "./tests/samples/grafana_access_policy_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", "value_start": 18, "value_end": 130, "entropy": 5.15841 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", "line_num": 1, "path": "./tests/samples/grafana_provisioned_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", "value_start": 11, "value_end": 107, "entropy": 3.81531 } ] }, { "rule": "Grafana Service Account Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "line_num": 1, "path": "./tests/samples/grafana_service_accounts", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, "value_end": 46, "entropy": 4.71879 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.01691 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Groq API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 3, "path": "./tests/samples/groq_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 56, "entropy": 5.02567 } ] }, { "rule": "Hashicorp Terraform Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 1, "path": "./tests/samples/hashicorp", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 90, "entropy": 5.47059 } ] }, { "rule": "Hashicorp Vault Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "line_num": 2, "path": "./tests/samples/hashicorp", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, "value_end": 94, "entropy": 5.53423 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "line_num": 1, "path": "./tests/samples/heroku", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf", "value_start": 0, "value_end": 65, "entropy": 5.32822 } ] }, { "rule": "Heroku Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "line_num": 2, "path": "./tests/samples/heroku", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HRKU-f1274537-88fb-deaf-beda-453bd9a496ef", "value_start": 0, "value_end": 41, "entropy": 4.0555 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.70256 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "url/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/part", "line_num": 2, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 4, "value_end": 41, "entropy": 4.77702 } ] }, { "rule": "Hugging Face User Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "line_num": 6, "path": "./tests/samples/huggingface", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample", "value_start": 0, "value_end": 37, "entropy": 4.62811 } ] }, { "rule": "Instagram Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "line_num": 1, "path": "./tests/samples/instagram_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, "value_end": 162, "entropy": 5.23164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/iso_ir_111.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "line_num": 1, "path": "./tests/samples/jfrog_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", "value_start": 0, "value_end": 64, "entropy": 5.28891 } ] }, { "rule": "Jfrog Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "line_num": 2, "path": "./tests/samples/jfrog_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa", "value_start": 0, "value_end": 73, "entropy": 5.35394 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "line_num": 1, "path": "./tests/samples/jira_confluence_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 63, "value_end": 107, "entropy": 4.60694 } ] }, { "rule": "Jira / Confluence PAT token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "TP: \"image/png\": \"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\n\",", "line_num": 2, "path": "./tests/samples/jira_confluence_pat", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ", "value_start": 67, "value_end": 111, "entropy": 4.60694 } ] }, { "rule": "JSON Web Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=", "line_num": 1, "path": "./tests/samples/json_web_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0", "value_start": 0, "value_end": 407, "entropy": 5.27189 } ] }, { "rule": "JSON Web Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, "path": "./tests/samples/json_web_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "value_start": 10, "value_end": 75, "entropy": 5.03815 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"[EC]\",", "line_num": 3, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"[EC", "value_start": 8, "value_end": 19, "entropy": 3.02717 }, { "line": " \"d\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\"", "line_num": 4, "path": "./tests/samples/jwk.json", "info": "", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-", "value_start": 14, "value_end": 57, "entropy": 4.87953 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"RSA\",", "line_num": 7, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"RSA\"", "value_start": 8, "value_end": 20, "entropy": 2.9183 }, { "line": " \"d\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\"", "line_num": 10, "path": "./tests/samples/jwk.json", "info": "", "variable": "d", "variable_start": 9, "variable_end": 10, "value": "-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY", "value_start": 14, "value_end": 100, "entropy": 5.43459 } ] }, { "rule": "JWK", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"kty\": \"oct\",", "line_num": 13, "path": "./tests/samples/jwk.json", "info": "", "variable": "kty", "variable_start": 9, "variable_end": 12, "value": "\"kty\": \"oct\"", "value_start": 8, "value_end": 20, "entropy": 2.75163 }, { "line": " \"k\": \"WrMwQfoNaHTgXU5fZvRGAD\"", "line_num": 16, "path": "./tests/samples/jwk.json", "info": "", "variable": "k", "variable_start": 9, "variable_end": 10, "value": "WrMwQfoNaHTgXU5fZvRGAD", "value_start": 14, "value_end": 36, "entropy": 4.36852 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 12, "value_end": 47, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 2, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 3, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 4, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 5, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 6, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/key.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "line_num": 1, "path": "./tests/samples/key.php", "info": "", "variable": "$key", "variable_start": 0, "variable_end": 4, "value": "gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1", "value_start": 8, "value_end": 64, "entropy": 4.96772 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );", "line_num": 3, "path": "./tests/samples/key.php", "info": "", "variable": "PASSWORD", "variable_start": 9, "variable_end": 17, "value": "2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG", "value_start": 22, "value_end": 53, "entropy": 4.63162 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "pkey = (\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\"", "line_num": 1, "path": "./tests/samples/key.py", "info": "", "variable": "pkey", "variable_start": 0, "variable_end": 4, "value": "LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn", "value_start": 9, "value_end": 71, "entropy": 4.71236 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "print(\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\")", "line_num": 7, "path": "./tests/samples/key.py", "info": "", "variable": "key", "variable_start": 34, "variable_end": 37, "value": "dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB", "value_start": 38, "value_end": 93, "entropy": 4.96282 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "PKEY = \"\"\"-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 9, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 10, "value_end": 45, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 10, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 11, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 12, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 13, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 14, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----\"\"\"", "line_num": 15, "path": "./tests/samples/key.py", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "line_num": 1, "path": "./tests/samples/llama", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1", "value_start": 0, "value_end": 52, "entropy": 5.03958 } ] }, { "rule": "LLAMA API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "line_num": 2, "path": "./tests/samples/llama", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT", "value_start": 0, "value_end": 52, "entropy": 5.05602 } ] }, { "rule": "MailChimp API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "mailchimp = \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\"", "line_num": 1, "path": "./tests/samples/mailchimp_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36", "value_start": 13, "value_end": 50, "entropy": 4.75662 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "key-a25a4ac62a074cd52c668c6b9937cf40", "line_num": 1, "path": "./tests/samples/mailgun", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "key-a25a4ac62a074cd52c668c6b9937cf40", "value_start": 0, "value_end": 36, "entropy": 3.91661 } ] }, { "rule": "MailGun API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "line_num": 2, "path": "./tests/samples/mailgun", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420", "value_start": 0, "value_end": 50, "entropy": 3.85669 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 45, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 46, "path": "./tests/samples/multifile.patch", "info": "", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 } ] }, { "rule": "AWS Multi", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "+ clid = \"AKIAQWADE5R42RDZ4JEM\"", "line_num": 8, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAQWADE5R42RDZ4JEM", "value_start": 11, "value_end": 31, "entropy": 3.68418 }, { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"", "line_num": 9, "path": "./tests/samples/multiline.patch", "info": "", "variable": "token", "variable_start": 3, "variable_end": 8, "value": "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ", "value_start": 12, "value_end": 52, "entropy": 4.78418 } ] }, { "rule": "Netlify Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "line_num": 1, "path": "./tests/samples/netlify", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP", "value_start": 0, "value_end": 40, "entropy": 4.61531 } ] }, { "rule": "NKEY Seed", "severity": "high", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "line_num": 2, "path": "./tests/samples/nkey_seed", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "value_start": 3, "value_end": 61, "entropy": 4.55826 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'", "line_num": 1, "path": "./tests/samples/nonce.py", "info": "", "variable": "nonce", "variable_start": 0, "variable_end": 5, "value": "bsfcvir57nt40rydvtbhs8lzbgljmet5", "value_start": 9, "value_end": 41, "entropy": 4.39032 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password: F1lT3ReDw17hQoT3s", "line_num": 3, "path": "./tests/samples/nonce.py", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "F1lT3ReDw17hQoT3s", "value_start": 10, "value_end": 27, "entropy": 3.73452 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\", "line_num": 7, "path": "./tests/samples/nonce.py", "info": "", "variable": "key_wrap", "variable_start": 0, "variable_end": 8, "value": "KJHhJKhKU7yguyuyfrtsdESffhjgkhYT", "value_start": 12, "value_end": 44, "entropy": 4.11673 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK", "line_num": 11, "path": "./tests/samples/nonce.py", "info": "", "variable": "key_multi", "variable_start": 0, "variable_end": 9, "value": "KJHfdjs8767gr54534wsFHGf5hJKhK", "value_start": 15, "value_end": 45, "entropy": 4.12323 } ] }, { "rule": "Notion Integration Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "line_num": 1, "path": "./tests/samples/notion", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ", "value_start": 0, "value_end": 50, "entropy": 5.06876 } ] }, { "rule": "NPM Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "positive: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", "line_num": 2, "path": "./tests/samples/npm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 9, "value_end": 49, "entropy": 4.80306 } ] }, { "rule": "NTLM Token", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "line_num": 1, "path": "./tests/samples/ntlm", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=", "value_start": 10, "value_end": 190, "entropy": 3.79713 } ] }, { "rule": "NuGet API key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'", "line_num": 1, "path": "./tests/samples/nuget_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam", "value_start": 5, "value_end": 51, "entropy": 4.56129 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 51, "entropy": 5.22625 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "line_num": 3, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "value_start": 0, "value_end": 56, "entropy": 5.25816 } ] }, { "rule": "OpenAI Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "line_num": 7, "path": "./tests/samples/open_ai_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk", "value_start": 0, "value_end": 56, "entropy": 4.12555 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "WXFES7QNTET5DQYC", "line_num": 1, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WXFES7QNTET5DQYC", "value_start": 0, "value_end": 16, "entropy": 3.625 } ] }, { "rule": "OTP / 2FA Secret", "severity": "info", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "line_num": 2, "path": "./tests/samples/otp_2fa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB", "value_start": 0, "value_end": 32, "entropy": 4.14032 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.99, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "gi_reo_gi_passwd", "variable_start": 0, "variable_end": 16, "value": "cAc48k1Zd7", "value_start": 20, "value_end": 30, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_passwd = \"cAc48k1Zd7\"; password_confirmation = \"cAc48k1Zd7\";", "line_num": 1, "path": "./tests/samples/passwd.groovy", "info": "", "variable": "password_confirmation", "variable_start": 33, "variable_end": 54, "value": "cAc48k1Zd7", "value_start": 58, "value_end": 68, "entropy": 3.12193 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "password = \"cackle!\"", "line_num": 1, "path": "./tests/samples/password.gradle", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 12, "value_end": 19, "entropy": 2.52164 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 9, "path": "./tests/samples/password.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password = \"MYPSWRD!@#$%^&*\"", "line_num": 1, "path": "./tests/samples/password.tfvars", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "MYPSWRD!@#$%^&*", "value_start": 12, "value_end": 27, "entropy": 3.90689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.996, "line_data_list": [ { "line": "MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA", "line_num": 1, "path": "./tests/samples/password_TRUE", "info": "", "variable": "MYSQLPASS", "variable_start": 0, "variable_end": 9, "value": "Ce7shE0ENPiBlE_EdEose0cBAA", "value_start": 11, "value_end": 37, "entropy": 3.8693 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "my_pw: nCzx8A8#!", "line_num": 2, "path": "./tests/samples/password_TRUE", "info": "", "variable": "my_pw", "variable_start": 0, "variable_end": 5, "value": "nCzx8A8#!", "value_start": 7, "value_end": 16, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "val password: String = \"exord13Paw64\", // scala", "line_num": 3, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "exord13Paw64", "value_start": 24, "value_end": 36, "entropy": 3.58496 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "def connect(passwd: str = \"cq2tPr1a2\"): # python default arg", "line_num": 4, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passwd", "variable_start": 12, "variable_end": 18, "value": "cq2tPr1a2", "value_start": 27, "value_end": 36, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if passworsd == \"q4c1a2oPd\": # __eq__ separator", "line_num": 5, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "q4c1a2oPd", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if passworsd != \"x6s7djtEa\": # __ne__ separator", "line_num": 6, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passworsd", "variable_start": 3, "variable_end": 12, "value": "x6s7djtEa", "value_start": 17, "value_end": 26, "entropy": 3.16993 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "password=2bkJgtJDiLcq1t", "line_num": 7, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "2bkJgtJDiLcq1t", "value_start": 9, "value_end": 23, "entropy": 3.52164 } ] }, { "rule": "CMD Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "", "variable": "passin", "variable_start": 33, "variable_end": 39, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "RUN openssl x509 -req -days 365 -passin \"pass:nCzx8A8#!\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key", "line_num": 8, "path": "./tests/samples/password_TRUE", "info": "", "variable": "pass", "variable_start": 41, "variable_end": 45, "value": "nCzx8A8#!", "value_start": 46, "value_end": 55, "entropy": 2.9477 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;", "line_num": 12, "path": "./tests/samples/password_TRUE", "info": "", "variable": "MYSQL_DATABASE_PASSWORD", "variable_start": 25, "variable_end": 48, "value": "2IWJD88FH4Y", "value_start": 49, "value_end": 60, "entropy": 3.27761 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "#define password \"n84ASM54y4\"", "line_num": 15, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%define PASSWORD \"n84ASM54y4\"", "line_num": 18, "path": "./tests/samples/password_TRUE", "info": "", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84ASM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%global PASSWORD \"n84RPM54y4\"", "line_num": 19, "path": "./tests/samples/password_TRUE", "info": "", "variable": "PASSWORD", "variable_start": 8, "variable_end": 16, "value": "n84RPM54y4", "value_start": 18, "value_end": 28, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "SET password \"n83.bat47Fy4\"", "line_num": 21, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "n83.bat47Fy4", "value_start": 14, "value_end": 26, "entropy": 3.4183 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "\"#define\\tpassword\\t\\\"n84ASM54y4\\\"\"", "line_num": 23, "path": "./tests/samples/password_TRUE", "info": "", "variable": "password", "variable_start": 10, "variable_end": 18, "value": "n84ASM54y4", "value_start": 22, "value_end": 32, "entropy": 2.84644 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.991, "line_data_list": [ { "line": "WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "line_num": 25, "path": "./tests/samples/password_TRUE", "info": "", "variable": "WPA2_PASSWORD", "variable_start": 0, "variable_end": 13, "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "value_start": 15, "value_end": 79, "entropy": 3.67082 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "+ \"password\": \"dkajco1\"", "line_num": 10, "path": "./tests/samples/password_utf16.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajco1", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.914, "line_data_list": [ { "line": "+ \"password\": \"dkajc\u00f61\"", "line_num": 9, "path": "./tests/samples/password_western.patch", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "dkajc\u00f61", "value_start": 16, "value_end": 23, "entropy": 2.80735 } ] }, { "rule": "PayPal Braintree Access Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "line_num": 1, "path": "./tests/samples/paypal_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", "value_start": 0, "value_end": 73, "entropy": 4.39985 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", "line_num": 2, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 13, "value_end": 44, "entropy": 3.38229 }, { "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "line_num": 3, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", "value_start": 0, "value_end": 108, "entropy": 5.52555 }, { "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "line_num": 4, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", "value_start": 0, "value_end": 110, "entropy": 5.49388 }, { "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "line_num": 5, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", "value_start": 0, "value_end": 106, "entropy": 5.44383 }, { "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "line_num": 6, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", "value_start": 0, "value_end": 90, "entropy": 5.53586 }, { "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "line_num": 7, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", "value_start": 0, "value_end": 96, "entropy": 5.46977 }, { "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "line_num": 8, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", "value_start": 0, "value_end": 110, "entropy": 5.55951 }, { "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "line_num": 9, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", "value_start": 0, "value_end": 112, "entropy": 5.49108 }, { "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "line_num": 10, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", "value_start": 0, "value_end": 114, "entropy": 5.57587 }, { "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "line_num": 11, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", "value_start": 0, "value_end": 63, "entropy": 4.72341 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", "line_num": 14, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", "value_start": 16, "value_end": 262, "entropy": 5.56558 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "line_num": 27, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 47, "entropy": 3.8375 }, { "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "line_num": 28, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, "value_end": 120, "entropy": 3.30679 }, { "line": "-----END LOW ENTROPY PRIVATE KEY-----", "line_num": 29, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, "value_end": 37, "entropy": 3.55488 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " * -----BEGIN PGP PRIVATE KEY BLOCK-----", "line_num": 35, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 42, "entropy": 3.62218 }, { "line": " * Version: GnuPG v1.4.12 (GNU/Linux)", "line_num": 36, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": " * Version: GnuPG v1.4.12 (GNU/Linux)", "value_start": 0, "value_end": 39, "entropy": 4.33255 }, { "line": "", "line_num": 37, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "", "value_start": 0, "value_end": 0, "entropy": 0.0 }, { "line": " * KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "line_num": 38, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "line_num": 39, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " //\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "line_num": 40, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB", "value_start": 4, "value_end": 68, "entropy": 5.20695 }, { "line": " ///\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "line_num": 41, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI", "value_start": 5, "value_end": 69, "entropy": 5.13876 }, { "line": " // UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "line_num": 42, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k", "value_start": 6, "value_end": 70, "entropy": 5.19868 }, { "line": " /// q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "line_num": 43, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI", "value_start": 7, "value_end": 71, "entropy": 5.13876 }, { "line": "// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/", "line_num": 44, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1", "value_start": 7, "value_end": 71, "entropy": 5.17157 }, { "line": "# # # * 874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "line_num": 45, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#+#+#+# * IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "line_num": 46, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb", "value_start": 11, "value_end": 75, "entropy": 5.17157 }, { "line": " + 'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +", "line_num": 47, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi", "value_start": 6, "value_end": 70, "entropy": 5.10751 }, { "line": " +\"\" +\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\"+", "line_num": 48, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh", "value_start": 8, "value_end": 72, "entropy": 5.10493 }, { "line": " * pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "line_num": 49, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf", "value_start": 5, "value_end": 69, "entropy": 5.23407 }, { "line": " * gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "line_num": 50, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70", "value_start": 5, "value_end": 69, "entropy": 5.15977 }, { "line": " * QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "line_num": 51, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc", "value_start": 5, "value_end": 69, "entropy": 5.20892 }, { "line": " * iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "line_num": 52, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY", "value_start": 5, "value_end": 69, "entropy": 4.94102 }, { "line": " * 5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "line_num": 53, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ", "value_start": 5, "value_end": 69, "entropy": 5.28891 }, { "line": " * HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "line_num": 54, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "line_num": 55, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw", "value_start": 5, "value_end": 69, "entropy": 5.14032 }, { "line": " * ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "line_num": 56, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy", "value_start": 5, "value_end": 69, "entropy": 5.09727 }, { "line": " * OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "line_num": 57, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4", "value_start": 5, "value_end": 69, "entropy": 5.04087 }, { "line": " * idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "line_num": 58, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI", "value_start": 5, "value_end": 69, "entropy": 5.14798 }, { "line": " * TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "line_num": 59, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7", "value_start": 5, "value_end": 69, "entropy": 5.17923 }, { "line": " * /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "line_num": 60, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz", "value_start": 5, "value_end": 69, "entropy": 4.99017 }, { "line": " * OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "line_num": 61, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB", "value_start": 5, "value_end": 69, "entropy": 5.21461 }, { "line": " * 4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "line_num": 62, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN", "value_start": 5, "value_end": 69, "entropy": 5.07782 }, { "line": " * sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "line_num": 63, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv", "value_start": 5, "value_end": 69, "entropy": 5.10907 }, { "line": " * ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "line_num": 64, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk", "value_start": 5, "value_end": 69, "entropy": 5.09314 }, { "line": " * n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "line_num": 65, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV", "value_start": 5, "value_end": 49, "entropy": 4.98773 }, { "line": " * =JG+I", "line_num": 66, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "=JG+I", "value_start": 5, "value_end": 10, "entropy": 2.32193 }, { "line": " * -----END PGP PRIVATE KEY BLOCK-----", "line_num": 67, "path": "./tests/samples/pem_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PGP PRIVATE KEY BLOCK-----", "value_start": 5, "value_end": 40, "entropy": 3.62274 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "k = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 1, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 7, "value_end": 34, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 2, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 10, "path": "./tests/samples/pem_key.p.code", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "#6 0.245 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 9, "value_end": 36, "entropy": 3.20029 }, { "line": "#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "line_num": 3, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0", "value_start": 9, "value_end": 73, "entropy": 4.69647 }, { "line": "#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "line_num": 4, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+", "value_start": 9, "value_end": 73, "entropy": 4.99586 }, { "line": "#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "line_num": 5, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows", "value_start": 9, "value_end": 73, "entropy": 5.13462 }, { "line": "#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "line_num": 6, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk", "value_start": 9, "value_end": 73, "entropy": 5.12086 }, { "line": "#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "line_num": 7, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS", "value_start": 9, "value_end": 73, "entropy": 4.78866 }, { "line": "#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "line_num": 8, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB", "value_start": 9, "value_end": 73, "entropy": 4.74561 }, { "line": "#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "line_num": 9, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD", "value_start": 9, "value_end": 73, "entropy": 4.89577 }, { "line": "#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "line_num": 10, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE", "value_start": 9, "value_end": 73, "entropy": 4.81189 }, { "line": "#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "line_num": 11, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE", "value_start": 9, "value_end": 73, "entropy": 4.74717 }, { "line": "#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "line_num": 12, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY", "value_start": 9, "value_end": 73, "entropy": 4.72227 }, { "line": "#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "line_num": 13, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R", "value_start": 9, "value_end": 73, "entropy": 4.71244 }, { "line": "#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "line_num": 14, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY", "value_start": 9, "value_end": 73, "entropy": 4.85947 }, { "line": "#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "line_num": 15, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK", "value_start": 9, "value_end": 73, "entropy": 4.86673 }, { "line": "#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "line_num": 16, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII", "value_start": 9, "value_end": 73, "entropy": 4.72006 }, { "line": "#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "line_num": 17, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg", "value_start": 9, "value_end": 73, "entropy": 4.49369 }, { "line": "#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "line_num": 18, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia", "value_start": 9, "value_end": 73, "entropy": 4.85141 }, { "line": "#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "line_num": 19, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g", "value_start": 9, "value_end": 73, "entropy": 4.92157 }, { "line": "#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "line_num": 20, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK", "value_start": 9, "value_end": 73, "entropy": 4.71436 }, { "line": "#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "line_num": 21, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h", "value_start": 9, "value_end": 73, "entropy": 4.69102 }, { "line": "#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "line_num": 22, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA", "value_start": 9, "value_end": 73, "entropy": 4.55202 }, { "line": "#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "line_num": 23, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA", "value_start": 9, "value_end": 73, "entropy": 4.70776 }, { "line": "#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "line_num": 24, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU", "value_start": 9, "value_end": 73, "entropy": 4.68689 }, { "line": "#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "line_num": 25, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE", "value_start": 9, "value_end": 73, "entropy": 4.85337 }, { "line": "#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "line_num": 26, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba", "value_start": 9, "value_end": 73, "entropy": 4.79657 }, { "line": "#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "line_num": 27, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U", "value_start": 9, "value_end": 73, "entropy": 4.76945 }, { "line": "#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "line_num": 28, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY", "value_start": 9, "value_end": 73, "entropy": 4.70126 }, { "line": "#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "line_num": 29, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI", "value_start": 9, "value_end": 73, "entropy": 4.74525 }, { "line": "#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "line_num": 30, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "line_num": 31, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc", "value_start": 9, "value_end": 73, "entropy": 4.84924 }, { "line": "#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "line_num": 32, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU", "value_start": 9, "value_end": 73, "entropy": 4.78518 }, { "line": "#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "line_num": 33, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa", "value_start": 9, "value_end": 73, "entropy": 4.73346 }, { "line": "#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "line_num": 34, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ", "value_start": 9, "value_end": 73, "entropy": 4.69143 }, { "line": "#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "line_num": 35, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U", "value_start": 9, "value_end": 73, "entropy": 4.86517 }, { "line": "#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "line_num": 36, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI", "value_start": 9, "value_end": 73, "entropy": 4.94712 }, { "line": "#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "line_num": 37, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN", "value_start": 9, "value_end": 73, "entropy": 5.09727 }, { "line": "#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "line_num": 38, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "line_num": 39, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "line_num": 40, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO", "value_start": 9, "value_end": 73, "entropy": 5.46875 }, { "line": "#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "line_num": 41, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "line_num": 42, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/", "value_start": 9, "value_end": 73, "entropy": 5.17923 }, { "line": "#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "line_num": 43, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "line_num": 44, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "line_num": 45, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb", "value_start": 9, "value_end": 73, "entropy": 5.11517 }, { "line": "#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "line_num": 46, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9", "value_start": 9, "value_end": 73, "entropy": 5.10751 }, { "line": "#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "line_num": 47, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "line_num": 48, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "line_num": 49, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "line_num": 50, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "line_num": 51, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "line_num": 52, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/", "value_start": 9, "value_end": 73, "entropy": 5.32782 }, { "line": "#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "line_num": 53, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23", "value_start": 9, "value_end": 73, "entropy": 5.35907 }, { "line": "#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "line_num": 54, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR", "value_start": 9, "value_end": 73, "entropy": 5.07212 }, { "line": "#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "line_num": 55, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "line_num": 56, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "line_num": 57, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl", "value_start": 9, "value_end": 73, "entropy": 5.23407 }, { "line": "#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "line_num": 58, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "line_num": 59, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/", "value_start": 9, "value_end": 73, "entropy": 5.19516 }, { "line": "#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "line_num": 60, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "line_num": 61, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA", "value_start": 9, "value_end": 73, "entropy": 5.17157 }, { "line": "#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "line_num": 62, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI", "value_start": 9, "value_end": 73, "entropy": 5.24173 }, { "line": "#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "line_num": 63, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "line_num": 64, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa", "value_start": 9, "value_end": 73, "entropy": 5.15821 }, { "line": "#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "line_num": 65, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK", "value_start": 9, "value_end": 73, "entropy": 5.04657 }, { "line": "#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "line_num": 66, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "line_num": 67, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H", "value_start": 9, "value_end": 73, "entropy": 5.11673 }, { "line": "#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "line_num": 68, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB", "value_start": 9, "value_end": 73, "entropy": 4.92197 }, { "line": "#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "line_num": 69, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb", "value_start": 9, "value_end": 73, "entropy": 5.20282 }, { "line": "#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "line_num": 70, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi", "value_start": 9, "value_end": 73, "entropy": 5.30836 }, { "line": "#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "line_num": 71, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk", "value_start": 9, "value_end": 73, "entropy": 5.24586 }, { "line": "#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "line_num": 72, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ", "value_start": 9, "value_end": 73, "entropy": 5.19102 }, { "line": "#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "line_num": 73, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf", "value_start": 9, "value_end": 73, "entropy": 5.22227 }, { "line": "#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "line_num": 74, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL", "value_start": 9, "value_end": 73, "entropy": 5.08392 }, { "line": "#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "line_num": 75, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "line_num": 76, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n", "value_start": 9, "value_end": 73, "entropy": 5.33195 }, { "line": "#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "line_num": 77, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ", "value_start": 9, "value_end": 73, "entropy": 5.16743 }, { "line": "#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "line_num": 78, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW", "value_start": 9, "value_end": 73, "entropy": 5.26118 }, { "line": "#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "line_num": 79, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI", "value_start": 9, "value_end": 73, "entropy": 5.21048 }, { "line": "#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "line_num": 80, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd", "value_start": 9, "value_end": 73, "entropy": 5.1757 }, { "line": "#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "line_num": 81, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN", "value_start": 9, "value_end": 73, "entropy": 5.22641 }, { "line": "#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "line_num": 82, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n", "value_start": 9, "value_end": 73, "entropy": 4.99017 }, { "line": "#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "line_num": 83, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd", "value_start": 9, "value_end": 73, "entropy": 5.38266 }, { "line": "#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "line_num": 84, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi", "value_start": 9, "value_end": 73, "entropy": 5.28477 }, { "line": "#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "line_num": 85, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "line_num": 86, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr", "value_start": 9, "value_end": 73, "entropy": 5.10493 }, { "line": "#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "line_num": 87, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb", "value_start": 9, "value_end": 73, "entropy": 5.28891 }, { "line": "#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "line_num": 88, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578", "value_start": 9, "value_end": 73, "entropy": 5.08548 }, { "line": "#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "line_num": 89, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T", "value_start": 9, "value_end": 73, "entropy": 5.14032 }, { "line": "#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "line_num": 90, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "line_num": 91, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU", "value_start": 9, "value_end": 73, "entropy": 5.16391 }, { "line": "#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "line_num": 92, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB", "value_start": 9, "value_end": 73, "entropy": 5.31602 }, { "line": "#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "line_num": 93, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO", "value_start": 9, "value_end": 73, "entropy": 5.09158 }, { "line": "#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "line_num": 94, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd", "value_start": 9, "value_end": 73, "entropy": 4.96658 }, { "line": "#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "line_num": 95, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA", "value_start": 9, "value_end": 73, "entropy": 5.3007 }, { "line": "#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "line_num": 96, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY", "value_start": 9, "value_end": 73, "entropy": 5.10907 }, { "line": "#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "line_num": 97, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4", "value_start": 9, "value_end": 73, "entropy": 5.33961 }, { "line": "#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "line_num": 98, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL", "value_start": 9, "value_end": 73, "entropy": 5.15977 }, { "line": "#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "line_num": 99, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks", "value_start": 9, "value_end": 73, "entropy": 5.27711 }, { "line": "#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "line_num": 100, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c", "value_start": 9, "value_end": 73, "entropy": 5.25352 }, { "line": "#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "line_num": 101, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP", "value_start": 9, "value_end": 73, "entropy": 5.05423 }, { "line": "#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "line_num": 102, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads", "value_start": 9, "value_end": 73, "entropy": 4.90408 }, { "line": "#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "line_num": 103, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco", "value_start": 9, "value_end": 73, "entropy": 5.40211 }, { "line": "#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "line_num": 104, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS", "value_start": 9, "value_end": 73, "entropy": 5.13266 }, { "line": "#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "line_num": 105, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ", "value_start": 9, "value_end": 73, "entropy": 5.14798 }, { "line": "#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS", "line_num": 106, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aANEEoU1dXIzisq6pQ0J8AKS", "value_start": 9, "value_end": 33, "entropy": 4.4183 }, { "line": "#6 0.245 -----END PRIVATE KEY-----", "line_num": 107, "path": "./tests/samples/pem_key.p.docker.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 9, "value_end": 34, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"rsa512.log\": \"\\\\r\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\r\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\r\\\\n#5 DONE 0.3s\\\\r\\\\n\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.docker.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----", "value_start": 102, "value_end": 749, "entropy": 5.8742 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "line_num": 2, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk", "value_start": 0, "value_end": 64, "entropy": 4.72268 }, { "line": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "line_num": 3, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK", "value_start": 0, "value_end": 64, "entropy": 5.12852 }, { "line": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "line_num": 4, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y", "value_start": 0, "value_end": 56, "entropy": 5.24468 }, { "line": "-----END PRIVATE KEY-----", "line_num": 5, "path": "./tests/samples/pem_key.p.ec", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN EC PRIVATE KEY-----", "value_start": 25, "value_end": 55, "entropy": 3.30775 }, { "line": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "line_num": 2, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV", "value_start": 0, "value_end": 64, "entropy": 4.64072 }, { "line": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "line_num": 3, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX", "value_start": 0, "value_end": 64, "entropy": 5.22641 }, { "line": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "line_num": 4, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC", "value_start": 0, "value_end": 56, "entropy": 5.11058 }, { "line": "-----END EC PRIVATE KEY-----`", "line_num": 5, "path": "./tests/samples/pem_key.p.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END EC PRIVATE KEY-----", "value_start": 0, "value_end": 28, "entropy": 3.16542 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " PRIVATE_KEY = \"-----BEGIN RSA PRIVATE KEY-----\\n\"", "line_num": 3, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 19, "value_end": 50, "entropy": 3.38229 }, { "line": " + \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\n\"", "line_num": 4, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n", "value_start": 10, "value_end": 74, "entropy": 4.53081 }, { "line": " + \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\n\"", "line_num": 5, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp", "value_start": 11, "value_end": 75, "entropy": 5.25352 }, { "line": " + \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\n\"", "line_num": 6, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP", "value_start": 13, "value_end": 77, "entropy": 5.09727 }, { "line": " + \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\n\"", "line_num": 7, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI", "value_start": 11, "value_end": 75, "entropy": 5.10907 }, { "line": " + \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\n\"", "line_num": 8, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5", "value_start": 9, "value_end": 73, "entropy": 5.0629 }, { "line": " + \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\n\"", "line_num": 9, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR", "value_start": 10, "value_end": 74, "entropy": 5.10907 }, { "line": " + \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\n\"", "line_num": 10, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0", "value_start": 11, "value_end": 75, "entropy": 5.15211 }, { "line": " + \"GeGaqMojMT7//g==\\n\"", "line_num": 11, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GeGaqMojMT7//g==", "value_start": 10, "value_end": 26, "entropy": 3.5 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\n\";", "line_num": 12, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 9, "value_end": 38, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " = \"\\\"-----BEGIN PRIVATE KEY-----\\\\n\"", "line_num": 16, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 6, "value_end": 33, "entropy": 3.20029 }, { "line": " + \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\n\"", "line_num": 17, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj", "value_start": 6, "value_end": 70, "entropy": 4.44143 }, { "line": " + \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\n\"", "line_num": 18, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs", "value_start": 6, "value_end": 70, "entropy": 5.16391 }, { "line": " + \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\n\"", "line_num": 19, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\n\"", "line_num": 20, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX", "value_start": 6, "value_end": 70, "entropy": 5.28891 }, { "line": " + \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\n\"", "line_num": 21, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB", "value_start": 6, "value_end": 70, "entropy": 5.19102 }, { "line": " + \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\n\"", "line_num": 22, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP", "value_start": 6, "value_end": 70, "entropy": 5.04243 }, { "line": " + \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\n\"", "line_num": 23, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq", "value_start": 6, "value_end": 70, "entropy": 5.24586 }, { "line": " + \"aAjRMKT7uCM=\\\\n\"", "line_num": 24, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aAjRMKT7uCM=", "value_start": 6, "value_end": 18, "entropy": 3.4183 }, { "line": " + \"-----END RSA PRIVATE KEY-----\\\"\";", "line_num": 25, "path": "./tests/samples/pem_key.p.java", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END RSA PRIVATE KEY-----", "value_start": 6, "value_end": 35, "entropy": 3.24663 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----", "line_num": 2, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 20, "value_end": 47, "entropy": 3.20029 }, { "line": "2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "line_num": 3, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP", "value_start": 20, "value_end": 84, "entropy": 4.67767 }, { "line": "2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "line_num": 4, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC", "value_start": 20, "value_end": 84, "entropy": 5.06602 }, { "line": "2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "line_num": 5, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "line_num": 6, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "line_num": 7, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s", "value_start": 20, "value_end": 84, "entropy": 5.27298 }, { "line": "2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "line_num": 8, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF", "value_start": 20, "value_end": 84, "entropy": 5.4375 }, { "line": "2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "line_num": 9, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "line_num": 10, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig", "value_start": 20, "value_end": 84, "entropy": 5.2382 }, { "line": "2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "line_num": 11, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw", "value_start": 20, "value_end": 84, "entropy": 5.27711 }, { "line": "2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "line_num": 12, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "line_num": 13, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj", "value_start": 20, "value_end": 84, "entropy": 5.09571 }, { "line": "2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "line_num": 14, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B", "value_start": 20, "value_end": 84, "entropy": 5.34375 }, { "line": "2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "line_num": 15, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau", "value_start": 20, "value_end": 84, "entropy": 5.14384 }, { "line": "2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "line_num": 16, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E", "value_start": 20, "value_end": 84, "entropy": 5.22993 }, { "line": "2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "line_num": 17, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "line_num": 18, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y", "value_start": 20, "value_end": 84, "entropy": 4.86869 }, { "line": "2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "line_num": 19, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW", "value_start": 20, "value_end": 84, "entropy": 5.35907 }, { "line": "2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "line_num": 20, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4", "value_start": 20, "value_end": 84, "entropy": 5.24173 }, { "line": "2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "line_num": 21, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O", "value_start": 20, "value_end": 84, "entropy": 5.00352 }, { "line": "2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "line_num": 22, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "line_num": 23, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "line_num": 24, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "line_num": 25, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso", "value_start": 20, "value_end": 84, "entropy": 4.95282 }, { "line": "2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "line_num": 26, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA", "value_start": 20, "value_end": 84, "entropy": 5.05836 }, { "line": "2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "line_num": 27, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY", "value_start": 20, "value_end": 84, "entropy": 5.12086 }, { "line": "2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "line_num": 28, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB", "value_start": 20, "value_end": 84, "entropy": 5.10907 }, { "line": "2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "line_num": 29, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G", "value_start": 20, "value_end": 84, "entropy": 5.13462 }, { "line": "2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "line_num": 30, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "line_num": 31, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "line_num": 32, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f", "value_start": 20, "value_end": 84, "entropy": 5.04243 }, { "line": "2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "line_num": 33, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "line_num": 34, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt", "value_start": 20, "value_end": 84, "entropy": 4.84727 }, { "line": "2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "line_num": 35, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "line_num": 36, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1", "value_start": 20, "value_end": 84, "entropy": 5.07782 }, { "line": "2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "line_num": 37, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM", "value_start": 20, "value_end": 84, "entropy": 5.13618 }, { "line": "2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "line_num": 38, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1", "value_start": 20, "value_end": 84, "entropy": 5.04657 }, { "line": "2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "line_num": 39, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb", "value_start": 20, "value_end": 84, "entropy": 5.10141 }, { "line": "2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "line_num": 40, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV", "value_start": 20, "value_end": 84, "entropy": 5.11673 }, { "line": "2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "line_num": 41, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "line_num": 42, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "line_num": 43, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv", "value_start": 20, "value_end": 84, "entropy": 5.21461 }, { "line": "2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "line_num": 44, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8", "value_start": 20, "value_end": 84, "entropy": 5.26532 }, { "line": "2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "line_num": 45, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/", "value_start": 20, "value_end": 84, "entropy": 5.02752 }, { "line": "2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "line_num": 46, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi", "value_start": 20, "value_end": 84, "entropy": 5.02142 }, { "line": "2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "line_num": 47, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC", "value_start": 20, "value_end": 84, "entropy": 5.25 }, { "line": "2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "line_num": 48, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J", "value_start": 20, "value_end": 84, "entropy": 5.12852 }, { "line": "2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "line_num": 49, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX", "value_start": 20, "value_end": 84, "entropy": 5.12283 }, { "line": "2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "line_num": 50, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin", "value_start": 20, "value_end": 84, "entropy": 5.12696 }, { "line": "2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "line_num": 51, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH", "value_start": 20, "value_end": 84, "entropy": 5.23407 }, { "line": "2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "line_num": 52, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "line_num": 53, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "line_num": 54, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx", "value_start": 20, "value_end": 84, "entropy": 4.94712 }, { "line": "2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "line_num": 55, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB", "value_start": 20, "value_end": 84, "entropy": 5.02298 }, { "line": "2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "line_num": 56, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u", "value_start": 20, "value_end": 84, "entropy": 5.17923 }, { "line": "2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "line_num": 57, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU", "value_start": 20, "value_end": 84, "entropy": 4.98251 }, { "line": "2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "line_num": 58, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl", "value_start": 20, "value_end": 84, "entropy": 5.19102 }, { "line": "2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "line_num": 59, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR", "value_start": 20, "value_end": 84, "entropy": 5.18336 }, { "line": "2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "line_num": 60, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE", "value_start": 20, "value_end": 84, "entropy": 5.02711 }, { "line": "2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "line_num": 61, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb", "value_start": 20, "value_end": 84, "entropy": 5.15211 }, { "line": "2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "line_num": 62, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA", "value_start": 20, "value_end": 84, "entropy": 5.09727 }, { "line": "2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "line_num": 63, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F", "value_start": 20, "value_end": 84, "entropy": 5.25352 }, { "line": "2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "line_num": 64, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2", "value_start": 20, "value_end": 84, "entropy": 5.17157 }, { "line": "2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "line_num": 65, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM", "value_start": 20, "value_end": 84, "entropy": 5.05423 }, { "line": "2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "line_num": 66, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc", "value_start": 20, "value_end": 84, "entropy": 5.14798 }, { "line": "2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "line_num": 67, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9", "value_start": 20, "value_end": 84, "entropy": 5.03477 }, { "line": "2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "line_num": 68, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ", "value_start": 20, "value_end": 84, "entropy": 4.99173 }, { "line": "2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "line_num": 69, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2", "value_start": 20, "value_end": 84, "entropy": 5.24586 }, { "line": "2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "line_num": 70, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH", "value_start": 20, "value_end": 84, "entropy": 5.21048 }, { "line": "2026-04-26 12:36:01 qwI=", "line_num": 71, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "qwI=", "value_start": 20, "value_end": 24, "entropy": 2.0 }, { "line": "2026-04-26 12:36:01 -----END PRIVATE KEY-----", "line_num": 72, "path": "./tests/samples/pem_key.p.log", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 20, "value_end": 45, "entropy": 3.04489 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "{\"ML-KEM-1024.log\":\"\\r\\n\\r\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\r\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\r\\n#7 DONE 0.3s\\r\\n\\r\\n#8 exporting to image\\r\\n#8 exporting layers 0.1s done\\r\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\r\\n#8 DONE 0.2s\"}", "line_num": 1, "path": "./tests/samples/pem_key.p.log.json", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----\\r\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\r\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\r\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\r\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\r\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\r\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\r\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\r\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\r\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\r\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\r\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\r\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\r\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\r\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\r\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\r\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\r\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\r\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\r\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\r\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\r\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\r\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\r\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\r\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\r\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\r\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\r\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\r\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\r\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\r\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\r\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\r\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\r\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\r\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\r\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\r\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\r\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\r\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\r\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\r\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\r\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\r\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\r\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\r\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\r\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\r\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\r\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\r\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\r\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\r\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\r\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\r\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\r\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\r\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\r\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\r\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\r\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\r\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\r\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\r\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\r\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\r\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\r\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\r\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\r\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\r\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\r\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\r\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\r\\n2026-04-26 12:36:01 qwI=\\r\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----", "value_start": 157, "value_end": 6245, "entropy": 5.8771 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "-----BEGIN PRIVATE KEY-----", "line_num": 1, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN PRIVATE KEY-----", "value_start": 0, "value_end": 27, "entropy": 3.20029 }, { "line": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "line_num": 2, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl", "value_start": 0, "value_end": 64, "entropy": 4.67611 }, { "line": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "line_num": 3, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX", "value_start": 0, "value_end": 64, "entropy": 5.10493 }, { "line": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "line_num": 4, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV", "value_start": 0, "value_end": 64, "entropy": 5.21461 }, { "line": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "line_num": 5, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e", "value_start": 0, "value_end": 64, "entropy": 4.97641 }, { "line": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "line_num": 6, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF", "value_start": 0, "value_end": 64, "entropy": 5.17923 }, { "line": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "line_num": 7, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb", "value_start": 0, "value_end": 64, "entropy": 5.25766 }, { "line": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "line_num": 8, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01", "value_start": 0, "value_end": 64, "entropy": 5.35141 }, { "line": "24n7nBfD3ZXv", "line_num": 9, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "24n7nBfD3ZXv", "value_start": 0, "value_end": 12, "entropy": 3.4183 }, { "line": "-----END PRIVATE KEY-----", "line_num": 10, "path": "./tests/samples/pem_key.p.rsa", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END PRIVATE KEY-----", "value_start": 0, "value_end": 25, "entropy": 3.04489 } ] }, { "rule": "Perplexity API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 1, "path": "./tests/samples/perplexity", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 53, "entropy": 5.08142 } ] }, { "rule": "Picatic API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_live_gireogicracklegireogicrackle1231", "line_num": 1, "path": "./tests/samples/picatic_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_live_gireogicracklegireogicrackle1231", "value_start": 0, "value_end": 40, "entropy": 3.7037 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "line_num": 1, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf", "value_start": 0, "value_end": 44, "entropy": 4.86251 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "line_num": 2, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq", "value_start": 0, "value_end": 50, "entropy": 4.89366 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "line_num": 3, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt", "value_start": 0, "value_end": 53, "entropy": 5.07217 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "line_num": 4, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX", "value_start": 0, "value_end": 61, "entropy": 5.03312 } ] }, { "rule": "PostHog Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "line_num": 5, "path": "./tests/samples/posthog", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp", "value_start": 0, "value_end": 64, "entropy": 5.04657 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "line_num": 1, "path": "./tests/samples/postman", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168", "value_start": 0, "value_end": 64, "entropy": 4.21698 } ] }, { "rule": "Postman Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "line_num": 2, "path": "./tests/samples/postman", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "PMAT-9GP54SGZ7TS928P0BW1K3AN0WX", "value_start": 0, "value_end": 31, "entropy": 4.3492 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81", "line_num": 10, "path": "./tests/samples/pretty.html", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0572bc9-7a3e-beef-cafe-9129474bcd81", "value_start": 41, "value_end": 77, "entropy": 3.84286 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " ", "line_num": 79, "path": "./tests/samples/pretty.html", "info": "", "variable": "token", "variable_start": 50, "variable_end": 55, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 56, "value_end": 102, "entropy": 4.79509 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": " http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "line_num": 80, "path": "./tests/samples/pretty.html", "info": "", "variable": "token", "variable_start": 42, "variable_end": 47, "value": "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O", "value_start": 48, "value_end": 94, "entropy": 4.79509 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": " 147# password: Jd3OnNy^564eD5_sd", "line_num": 147, "path": "./tests/samples/pretty.html", "info": "", "variable": "password", "variable_start": 12, "variable_end": 20, "value": "Jd3OnNy^564eD5_sd", "value_start": 22, "value_end": 39, "entropy": 3.85217 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " 151# a0ce4d19-7a3e-beef-cafe-9129474bcd81", "line_num": 151, "path": "./tests/samples/pretty.html", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "a0ce4d19-7a3e-beef-cafe-9129474bcd81", "value_start": 13, "value_end": 49, "entropy": 3.74259 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.929, "line_data_list": [ { "line": "pwd = \"cackle!\"", "line_num": 1, "path": "./tests/samples/pwd.gradle", "info": "", "variable": "pwd", "variable_start": 0, "variable_end": 3, "value": "cackle!", "value_start": 7, "value_end": 14, "entropy": 2.52164 } ] }, { "rule": "PyPi API Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "line_num": 1, "path": "./tests/samples/pypi_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp", "value_start": 0, "value_end": 179, "entropy": 5.5923 } ] }, { "rule": "RubyGems API Key", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "line_num": 1, "path": "./tests/samples/rubygems", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d", "value_start": 0, "value_end": 57, "entropy": 4.06282 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DFT5H59PHLAN0IA", "value_start": 9, "value_end": 26, "entropy": 3.45482 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DG9UE38D6ELk5l", "value_start": 27, "value_end": 43, "entropy": 3.625 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00Dh68fkeHGbDk92k", "value_start": 61, "value_end": 78, "entropy": 3.57247 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k", "line_num": 2, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DyXD47kKDny11j", "value_start": 44, "value_end": 60, "entropy": 3.32782 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "line_num": 3, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1", "value_start": 8, "value_end": 120, "entropy": 5.19811 } ] }, { "rule": "Salesforce Credentials", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "line_num": 4, "path": "./tests/samples/salesfoce", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1", "value_start": 13, "value_end": 98, "entropy": 5.45622 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "salt1 = b\"\\x23!\\xae2389x&543@\"", "line_num": 1, "path": "./tests/samples/salt.py", "info": "", "variable": "salt1", "variable_start": 0, "variable_end": 5, "value": "\\x23!\\xae2389x&543@", "value_start": 10, "value_end": 29, "entropy": 3.53689 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.949, "line_data_list": [ { "line": "salt3 = u\"\\u0020827634876\"", "line_num": 3, "path": "./tests/samples/salt.py", "info": "", "variable": "salt3", "variable_start": 0, "variable_end": 5, "value": "\\u0020827634876", "value_start": 10, "value_end": 25, "entropy": 3.05656 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "salt4 = {\"salt5\": \"my124%#$@s\\x04clt\\0\"}", "line_num": 4, "path": "./tests/samples/salt.py", "info": "", "variable": "salt5", "variable_start": 10, "variable_end": 15, "value": "my124%#$@s\\x04clt\\0", "value_start": 19, "value_end": 38, "entropy": 3.93214 } ] }, { "rule": "Salt", "severity": "low", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "json_escaped = \"{\\\\\\\"salt8\\\\\\\":\\\\\\\"4b9a6d8b638eb0c6\\\\\\\"}\"", "line_num": 5, "path": "./tests/samples/salt.py", "info": "", "variable": "salt8", "variable_start": 21, "variable_end": 26, "value": "4b9a6d8b638eb0c6", "value_start": 35, "value_end": 51, "entropy": 3.28064 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 0.812, "line_data_list": [ { "line": "#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "line_num": 2, "path": "./tests/samples/sample.h", "info": "", "variable": "AESKEY", "variable_start": 8, "variable_end": 14, "value": "0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\", "value_start": 16, "value_end": 83, "entropy": 3.24263 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.997, "line_data_list": [ { "line": "TokenRequest", "line_num": 9, "path": "./tests/samples/sample.html", "info": "", "variable": "token", "variable_start": 28, "variable_end": 33, "value": "g1re0g1T0keN3zWx", "value_start": 40, "value_end": 56, "entropy": 3.5 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " placeholder=\"Your password: "g1re0g1Pa5$w0Rd"\"", "line_num": 16, "path": "./tests/samples/sample.html", "info": "", "variable": "Your password", "variable_start": 17, "variable_end": 30, "value": "g1re0g1Pa5$w0Rd", "value_start": 38, "value_end": 53, "entropy": 3.50689 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": " ", "line_num": 21, "path": "./tests/samples/sample.html", "info": "", "variable": "password", "variable_start": 30, "variable_end": 38, "value": "g1re0g2Pa5$w0Rd", "value_start": 39, "value_end": 54, "entropy": 3.64022 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36}{\\loch", "line_num": 25, "path": "./tests/samples/sample.rtf", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36", "value_start": 0, "value_end": 36, "entropy": 3.84286 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "line_num": 2, "path": "./tests/samples/sample.spec", "info": "", "variable": "token", "variable_start": 8, "variable_end": 13, "value": "4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2", "value_start": 14, "value_end": 78, "entropy": 3.73644 } ] }, { "rule": "AWS Client ID", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " AKIAGIREOGIAWSKEY321==", "line_num": 3, "path": "./tests/samples/sample.tm7", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AKIAGIREOGIAWSKEY321", "value_start": 11, "value_end": 31, "entropy": 3.54644 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " 17205d79-dead-beef-a311-26312ad6ea36", "line_num": 4, "path": "./tests/samples/sample.tm7", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "17205d79-dead-beef-a311-26312ad6ea36", "value_start": 9, "value_end": 45, "entropy": 3.60702 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " May password:6Ew1ThY0u", "line_num": 5, "path": "./tests/samples/sample.tm7", "info": "", "variable": "password", "variable_start": 15, "variable_end": 23, "value": "6Ew1ThY0u", "value_start": 24, "value_end": 33, "entropy": 3.16993 } ] }, { "rule": "Nonce", "severity": "low", "confidence": "moderate", "ml_probability": 0.998, "line_data_list": [ { "line": " __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "line_num": 13, "path": "./tests/samples/sealed_secrets.yaml", "info": "", "variable": "__NONCE", "variable_start": 4, "variable_end": 11, "value": "AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO", "value_start": 13, "value_end": 394, "entropy": 5.81513 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": " Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201},", "line_num": 3, "path": "./tests/samples/secret.go", "info": "", "variable": "Secret", "variable_start": 8, "variable_end": 14, "value": "333, 9, 100, 114, 245, 164, 134, 217,225,26,0, 172, 39, 248, 203, 201", "value_start": 23, "value_end": 99, "entropy": 3.10882 } ] }, { "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----", "line_num": 7, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----BEGIN OPENSSH PRIVATE KEY-----", "value_start": 14, "value_end": 49, "entropy": 3.58716 }, { "line": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "line_num": 8, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx", "value_start": 0, "value_end": 76, "entropy": 4.18903 }, { "line": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "line_num": 9, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt", "value_start": 0, "value_end": 76, "entropy": 4.74471 }, { "line": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "line_num": 10, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w", "value_start": 0, "value_end": 76, "entropy": 5.24555 }, { "line": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "line_num": 11, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA", "value_start": 0, "value_end": 76, "entropy": 4.94996 }, { "line": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "line_num": 12, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==", "value_start": 0, "value_end": 32, "entropy": 4.47641 }, { "line": "-----END OPENSSH PRIVATE KEY-----", "line_num": 13, "path": "./tests/samples/secret.go", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "-----END OPENSSH PRIVATE KEY-----", "value_start": 0, "value_end": 33, "entropy": 3.46942 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", "line_num": 17, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_1", "variable_start": 4, "variable_end": 34, "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", "line_num": 18, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_2", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", "value_start": 36, "value_end": 76, "entropy": 4.78418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", "line_num": 19, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path_3", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", "value_start": 36, "value_end": 76, "entropy": 4.83418 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "var secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", "line_num": 20, "path": "./tests/samples/secret.go", "info": "", "variable": "secret_looks_like_linux_path__", "variable_start": 4, "variable_end": 34, "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", "value_start": 36, "value_end": 76, "entropy": 4.85306 } ] }, { "rule": "Secret", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "LEGACY_GITHUB_SECRET = \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\"", "line_num": 1, "path": "./tests/samples/secret.groovy", "info": "", "variable": "LEGACY_GITHUB_SECRET", "variable_start": 0, "variable_end": 20, "value": "fa87409ad3a4589fd279c501b3d2e174855ee9f4", "value_start": 24, "value_end": 64, "entropy": 3.80869 } ] }, { "rule": "SendGrid API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SG.gireogigireogigi.gireogigireogigi", "line_num": 1, "path": "./tests/samples/sendgrid_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SG.gireogigireogigi.gireogigireogigi", "value_start": 0, "value_end": 36, "entropy": 2.60219 } ] }, { "rule": "Sentry Organization Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "line_num": 1, "path": "./tests/samples/sentry", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv", "value_start": 0, "value_end": 179, "entropy": 5.53873 } ] }, { "rule": "Sentry User Auth Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 2, "path": "./tests/samples/sentry", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 71, "entropy": 4.14384 } ] }, { "rule": "Shopify Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"shopyfy_k\": \"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\",", "line_num": 1, "path": "./tests/samples/shopify_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 18, "value_end": 56, "entropy": 3.80396 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "line_num": 1, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be", "value_start": 0, "value_end": 97, "entropy": 4.32216 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "line_num": 2, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN", "value_start": 0, "value_end": 56, "entropy": 4.71996 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "line_num": 3, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl", "value_start": 0, "value_end": 171, "entropy": 4.93756 } ] }, { "rule": "Slack Token", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "line_num": 4, "path": "./tests/samples/slack_token.hs", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ", "value_start": 0, "value_end": 153, "entropy": 4.95538 } ] }, { "rule": "Slack Webhook", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": " \"hook\": \"https://hooks.slack.com/services/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\",", "line_num": 1, "path": "./tests/samples/slack_webhook.template", "info": "", "variable": "hooks.slack.com/services", "variable_start": 21, "variable_end": 45, "value": "/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg", "value_start": 45, "value_end": 93, "entropy": 4.76184 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',", "line_num": 1, "path": "./tests/samples/sonarqube", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab", "value_start": 16, "value_end": 60, "entropy": 4.10151 } ] }, { "rule": "SonarQube Credentials", "severity": "medium", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "line_num": 2, "path": "./tests/samples/sonarqube", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984", "value_start": 14, "value_end": 58, "entropy": 3.954 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.918, "line_data_list": [ { "line": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';", "line_num": 1, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY", "variable_start": 0, "variable_end": 70, "value": "SqLpa5sW0rD", "value_start": 72, "value_end": 83, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.917, "line_data_list": [ { "line": "'create user name identified by 'SqLpa5sW0rD' --", "line_num": 2, "path": "./tests/samples/sql_password", "info": "", "variable": "create user name identified by", "variable_start": 1, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 3, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`", "line_num": 4, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'haproxy'@'%' IDENTIFIED BY", "variable_start": 2, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "exec(\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\");", "line_num": 5, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY", "variable_start": 6, "variable_end": 58, "value": "SqLpa5sW0rD", "value_start": 59, "value_end": 70, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.914, "line_data_list": [ { "line": "CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;", "line_num": 8, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER foo WITH ENCRYPTED PASSWORD", "variable_start": 0, "variable_end": 39, "value": "SqLpa5sW0rD", "value_start": 41, "value_end": 52, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.999, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "", "variable": "PASSWORD", "variable_start": 26, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 9, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 36, "value": "SqLpa5sW0rD", "value_start": 38, "value_end": 49, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.992, "line_data_list": [ { "line": "ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\"", "line_num": 10, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER ROLE postgres PASSWORD", "variable_start": 0, "variable_end": 28, "value": "SqLpa5sW0rD", "value_start": 30, "value_end": 41, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 11, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER username WITH PASSWORD", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "", "variable": "PASSWORD", "variable_start": 27, "variable_end": 35, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';", "line_num": 12, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE LOGIN username WITH PASSWORD =", "variable_start": 0, "variable_end": 37, "value": "SqLpa5sW0rD", "value_start": 39, "value_end": 50, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;", "line_num": 13, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER chuck WITH PASSWORD", "variable_start": 0, "variable_end": 31, "value": "SqLpa5sW0rD", "value_start": 33, "value_end": 44, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;", "line_num": 14, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER IF NOT EXISTS sandy WITH PASSWORD", "variable_start": 0, "variable_end": 45, "value": "SqLpa5sW0rD", "value_start": 47, "value_end": 58, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 15, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER myuser WITH PASSWORD", "variable_start": 0, "variable_end": 32, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 1.0, "line_data_list": [ { "line": "CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';", "line_num": 16, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER username WITH PASSWORD", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 36, "value_end": 47, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.964, "line_data_list": [ { "line": "ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 17, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 47, "value": "SqLpa5sW0rD", "value_start": 49, "value_end": 60, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.899, "line_data_list": [ { "line": "ALTER USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 19, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 33, "value": "SqLpa5sW0rD", "value_start": 34, "value_end": 45, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.991, "line_data_list": [ { "line": "CREATE USER username IDENTIFIED BY SqLpa5sW0rD;", "line_num": 20, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER username IDENTIFIED BY", "variable_start": 0, "variable_end": 34, "value": "SqLpa5sW0rD", "value_start": 35, "value_end": 46, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.997, "line_data_list": [ { "line": "CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';", "line_num": 21, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'username'@'localhost' IDENTIFIED BY", "variable_start": 0, "variable_end": 48, "value": "SqLpa5sW0rD", "value_start": 50, "value_end": 61, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.998, "line_data_list": [ { "line": "mysql -u root -pdbadmin -e \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\"\u2013 ", "line_num": 22, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY", "variable_start": 28, "variable_end": 77, "value": "SqLpa5sW0rD", "value_start": 79, "value_end": 90, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "-c \"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\"", "line_num": 23, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE scram_test login password", "variable_start": 4, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 43, "value_end": 54, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.995, "line_data_list": [ { "line": "CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;", "line_num": 24, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE app_admin WITH LOGIN PASSWORD", "variable_start": 0, "variable_end": 41, "value": "SqLpa5sW0rD", "value_start": 42, "value_end": 53, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.999, "line_data_list": [ { "line": "CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';", "line_num": 25, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE ROLE flask_admin_geo LOGIN PASSWORD", "variable_start": 0, "variable_end": 42, "value": "SqLpa5sW0rD", "value_start": 44, "value_end": 55, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.702, "line_data_list": [ { "line": "create role forum_example_graph_demo login password 'SqLpa5sW0rD';", "line_num": 26, "path": "./tests/samples/sql_password", "info": "", "variable": "create role forum_example_graph_demo login password", "variable_start": 0, "variable_end": 51, "value": "SqLpa5sW0rD", "value_start": 53, "value_end": 64, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.722, "line_data_list": [ { "line": "create role forum_example_graph login password 'SqLpa5sW0rD';", "line_num": 27, "path": "./tests/samples/sql_password", "info": "", "variable": "create role forum_example_graph login password", "variable_start": 0, "variable_end": 46, "value": "SqLpa5sW0rD", "value_start": 48, "value_end": 59, "entropy": 3.45943 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.996, "line_data_list": [ { "line": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1", "line_num": 31, "path": "./tests/samples/sql_password", "info": "", "variable": "ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS", "variable_start": 0, "variable_end": 70, "value": "*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409", "value_start": 72, "value_end": 113, "entropy": 3.78769 } ] }, { "rule": "SQL Password", "severity": "medium", "confidence": "weak", "ml_probability": 0.849, "line_data_list": [ { "line": "sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\; >>tmp.sql;'", "line_num": 32, "path": "./tests/samples/sql_password", "info": "", "variable": "CREATE USER typeorm_mg IDENTIFIED BY", "variable_start": 12, "variable_end": 48, "value": "SqLpa5sW0rD\\;", "value_start": 49, "value_end": 62, "entropy": 3.70044 } ] }, { "rule": "Square Access Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": " \"SQT\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",", "line_num": 1, "path": "./tests/samples/square_access_token", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF", "value_start": 12, "value_end": 76, "entropy": 4.66018 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sq0atp-GIREOGICR0CKLE12W45A78", "line_num": 1, "path": "./tests/samples/square_client_id", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0atp-GIREOGICR0CKLE12W45A78", "value_start": 0, "value_end": 29, "entropy": 4.44419 } ] }, { "rule": "Square Credentials", "severity": "medium", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "20241204_112356 Colored line: \"\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\u001b[0m\";", "line_num": 1, "path": "./tests/samples/square_oauth_secret", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI", "value_start": 36, "value_end": 86, "entropy": 4.75856 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "line_num": 3, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_test_Tph4NiI7TYooMQaujxvdEDq5", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "line_num": 4, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "rk_live_TsS4QI2dNfwyVM7YdjI78ehK", "value_start": 0, "value_end": 32, "entropy": 4.6875 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "line_num": 5, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_T1z4jtdp7dcC39HqLyjWareD", "value_start": 0, "value_end": 32, "entropy": 4.53891 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "line_num": 6, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx", "value_start": 0, "value_end": 107, "entropy": 5.24966 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "line_num": 7, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h", "value_start": 0, "value_end": 107, "entropy": 5.44092 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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", "line_num": 8, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 107, "entropy": 5.50064 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "line_num": 9, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m", "value_start": 0, "value_end": 38, "entropy": 4.47135 } ] }, { "rule": "Stripe Credentials", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "line_num": 10, "path": "./tests/samples/stripe_credentials", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW", "value_start": 0, "value_end": 38, "entropy": 4.82687 } ] }, { "rule": "Telegram Bot API Token", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "line_num": 1, "path": "./tests/samples/telegram_api_key", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "value_start": 0, "value_end": 45, "entropy": 4.94174 } ] }, { "rule": "Grafana Provisioned API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 18, "path": "./tests/samples/test2.eml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "line_num": 18, "path": "./tests/samples/test2.eml", "info": "", "variable": "token in text", "variable_start": 0, "variable_end": 13, "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", "value_start": 15, "value_end": 109, "entropy": 4.02967 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "line_num": 1, "path": "./tests/samples/together", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc", "value_start": 0, "value_end": 50, "entropy": 5.13366 } ] }, { "rule": "Together AI API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "line_num": 2, "path": "./tests/samples/together", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR", "value_start": 0, "value_end": 50, "entropy": 5.16386 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "gi_reo_gi_token = \"G1Re06G1BdgNseiJDN21Z094M\"", "line_num": 1, "path": "./tests/samples/token.toml", "info": "", "variable": "gi_reo_gi_token", "variable_start": 0, "variable_end": 15, "value": "G1Re06G1BdgNseiJDN21Z094M", "value_start": 19, "value_end": 44, "entropy": 4.13366 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo", "line_num": 2, "path": "./tests/samples/token.toml", "info": "", "variable": "DemoToken", "variable_start": 8, "variable_end": 17, "value": "Nxs094M3ed2s1Re0F4M3ed2GZ8M=", "value_start": 19, "value_end": 47, "entropy": 4.03915 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "tp_token_value=\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\"", "line_num": 4, "path": "./tests/samples/token.toml", "info": "", "variable": "tp_token_value", "variable_start": 0, "variable_end": 14, "value": "b035d48j9X2dfjF0hb9sd8Guf5hWu2ia", "value_start": 16, "value_end": 48, "entropy": 4.22641 } ] }, { "rule": "Tavily API Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "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 # TP", "line_num": 1, "path": "./tests/samples/tvly", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "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", "value_start": 0, "value_end": 37, "entropy": 4.84432 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "SK4D2F64E2A108CD72F648B1984C3B5A13", "line_num": 1, "path": "./tests/samples/twilio_credentials_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "SK4D2F64E2A108CD72F648B1984C3B5A13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "Twilio Credentials", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "AC4d2f64e2a108cd72f648b1984c3b5a13", "line_num": 2, "path": "./tests/samples/twilio_credentials_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "AC4d2f64e2a108cd72f648b1984c3b5a13", "value_start": 0, "value_end": 34, "entropy": 4.02086 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');", "line_num": 1, "path": "./tests/samples/url_cred.js", "info": "", "variable": "dbconnection://", "variable_start": 32, "variable_end": 47, "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, "entropy": 3.58496 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", "line_num": 3, "path": "./tests/samples/url_cred.js", "info": "", "variable": "Credential", "variable_start": 38, "variable_end": 48, "value": "546DFS64N90P3AW7DX%2Fkeep%26cut", "value_start": 49, "value_end": 80, "entropy": 4.41372 } ] }, { "rule": "Key", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "", "variable": "key", "variable_start": 36, "variable_end": 39, "value": "3487263-2384579834-234732875-345", "value_start": 40, "value_end": 72, "entropy": 2.97591 } ] }, { "rule": "Credential", "severity": "medium", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", "line_num": 10, "path": "./tests/samples/url_cred.js", "info": "", "variable": "Credential", "variable_start": 6, "variable_end": 16, "value": "546DFS64N90P3AW7DX", "value_start": 17, "value_end": 35, "entropy": 3.83659 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", "line_num": 13, "path": "./tests/samples/url_cred.js", "info": "", "variable": "smtps://", "variable_start": 18, "variable_end": 26, "value": "FnD83JZs", "value_start": 44, "value_end": 52, "entropy": 3.0 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "url3d = \"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\";", "line_num": 19, "path": "./tests/samples/url_cred.js", "info": "", "variable": "token", "variable_start": 65, "variable_end": 70, "value": "h1d3Me4ch534d801sl3jdk", "value_start": 73, "value_end": 95, "entropy": 3.75444 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "if (password !== \"PaS5w0rD2#\"){", "line_num": 21, "path": "./tests/samples/url_cred.js", "info": "", "variable": "password", "variable_start": 4, "variable_end": 12, "value": "PaS5w0rD2#", "value_start": 18, "value_end": 28, "entropy": 3.32193 } ] }, { "rule": "URL Credentials", "severity": "high", "confidence": "moderate", "ml_probability": 0.933, "line_data_list": [ { "line": "{\"line\": \"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\"}", "line_num": 25, "path": "./tests/samples/url_cred.js", "info": "", "variable": "mongodb://", "variable_start": 15, "variable_end": 25, "value": "p4Dsr8b", "value_start": 34, "value_end": 41, "entropy": 2.80735 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", "line_num": 1, "path": "./tests/samples/uuid", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", "value_start": 0, "value_end": 36, "entropy": 3.58954 } ] }, { "rule": "Vercel Token", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "line_num": 1, "path": "./tests/samples/vercel", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3", "value_start": 0, "value_end": 60, "entropy": 5.23581 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wxe191bc54fc7d529a", "line_num": 1, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wxe191bc54fc7d529a", "value_start": 0, "value_end": 18, "entropy": 3.72548 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx2274a335e18222d6", "line_num": 2, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx2274a335e18222d6", "value_start": 0, "value_end": 18, "entropy": 3.41383 } ] }, { "rule": "Tencent WeChat API App ID", "severity": "medium", "confidence": "weak", "ml_probability": null, "line_data_list": [ { "line": "wx4d82d07e3eb5ba84", "line_num": 3, "path": "./tests/samples/wechat_p", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "wx4d82d07e3eb5ba84", "value_start": 0, "value_end": 18, "entropy": 3.61437 } ] }, { "rule": "X AI API Key", "severity": "high", "confidence": "moderate", "ml_probability": null, "line_data_list": [ { "line": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "line_num": 1, "path": "./tests/samples/xai", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL", "value_start": 0, "value_end": 84, "entropy": 5.35637 } ] }, { "rule": "BASE64 Private Key", "severity": "high", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\n DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\n 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\n AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\n BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\n caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\n EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "line_num": 3, "path": "./tests/samples/xml_data.xml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\n DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\n 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\n AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\n BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\n caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\n EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP", "value_start": 7, "value_end": 485, "entropy": 5.75738 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 0.993, "line_data_list": [ { "line": "token : \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\"", "line_num": 12, "path": "./tests/samples/xml_data.xml", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "value_start": 9, "value_end": 116, "entropy": 5.12458 } ] }, { "rule": "Token", "severity": "high", "confidence": "moderate", "ml_probability": 1.0, "line_data_list": [ { "line": "token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\n hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==", "line_num": 16, "path": "./tests/samples/xml_data.xml", "info": "", "variable": "token", "variable_start": 0, "variable_end": 5, "value": "IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn", "value_start": 8, "value_end": 58, "entropy": 4.83327 } ] }, { "rule": "Password", "severity": "high", "confidence": "moderate", "ml_probability": 0.857, "line_data_list": [ { "line": "password : cackle!", "line_num": 5, "path": "./tests/samples/xml_password.xml", "info": "", "variable": "password", "variable_start": 0, "variable_end": 8, "value": "cackle!", "value_start": 11, "value_end": 18, "entropy": 2.52164 } ] }, { "rule": "UUID", "severity": "info", "confidence": "strong", "ml_probability": null, "line_data_list": [ { "line": "password : Password for authorization\n BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", "line_num": 11, "path": "./tests/samples/xml_password.xml", "info": "", "variable": null, "variable_start": -2, "variable_end": -2, "value": "bace4d59-fa7e-beef-cafe-9129474bcd81", "value_start": 52, "value_end": 88, "entropy": 3.66606 } ] } ] ================================================ FILE: tests/deep_scanner/__init__.py ================================================ ================================================ FILE: tests/deep_scanner/test_abstract_scanner.py ================================================ import random import unittest from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from tests import AZ_STRING, AZ_DATA class TestAbstractScanner(unittest.TestCase): def test_structure_processing_n(self): self.assertListEqual([], list(AbstractScanner.structure_processing(structure=None))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure=42))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure=3.14))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure=AZ_STRING))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure=AZ_DATA))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure=()))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure=[]))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure={}))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure={0: [], 1: (), 2: {}}))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure={"key": None}))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure={"key": 0}))) self.assertListEqual([], list(AbstractScanner.structure_processing(structure={"key": False}))) def test_structure_processing_p(self): self.assertListEqual([(0, 1), (1, 2), (2, 3)], list(AbstractScanner.structure_processing(structure=(1, 2, 3)))) self.assertListEqual([(0, 1), (1, 2), (2, 3)], list(AbstractScanner.structure_processing(structure=[1, 2, 3]))) self.assertListEqual([(0, 1), (1, 2), (2, 3)], list(AbstractScanner.structure_processing(structure={ 0: 1, 1: 2, 2: 3 }))) self.assertListEqual([(42, 3.14)], list(AbstractScanner.structure_processing(structure={42: 3.14}))) self.assertListEqual([("key", AZ_STRING), ("VALUE", AZ_DATA), (AZ_STRING, AZ_DATA)], list(AbstractScanner.structure_processing(structure={ "key": AZ_STRING, "VALUE": AZ_DATA }))) def test_key_value_combination_n(self): # bytes in key do not produce augmented pair self.assertListEqual([], list(AbstractScanner.key_value_combination(structure={ "key": AZ_STRING, b"VALUE": AZ_DATA }))) # and wrong symbols do not produce the pair self.assertListEqual([], list(AbstractScanner.key_value_combination(structure={ "KEY": AZ_STRING, "VaLuE": AZ_DATA }))) # bytes which cannot be decoded do not produce the augmentation self.assertListEqual([], list( AbstractScanner.key_value_combination(structure={ "Key": random.randbytes(16), "VALUE": AZ_DATA }))) def test_key_value_combination_p(self): self.assertListEqual([(AZ_STRING, AZ_DATA)], list(AbstractScanner.key_value_combination(structure={ "Key": AZ_STRING, "VALUE": AZ_DATA }))) # bytes in key value may produce the augmentation self.assertListEqual([(AZ_STRING, AZ_DATA)], list(AbstractScanner.key_value_combination(structure={ "Key": AZ_DATA, "VALUE": AZ_DATA }))) ================================================ FILE: tests/deep_scanner/test_bzip2_scanner.py ================================================ import unittest from credsweeper.deep_scanner.bzip2_scanner import Bzip2Scanner class TestBzip2Scanner(unittest.TestCase): def test_match_p(self): # Valid bzip2 signature with correct version and block size self.assertTrue(Bzip2Scanner.match(b"\x42\x5A\x68\x31\x31\x41\x59\x26\x53\x59")) self.assertTrue(Bzip2Scanner.match(b"\x42\x5A\x68\x39\x31\x41\x59\x26\x53\x59")) def test_match_n(self): # Wrong data type with self.assertRaises(AttributeError): Bzip2Scanner.match(None) with self.assertRaises(AttributeError): Bzip2Scanner.match(1) # Too short self.assertFalse(Bzip2Scanner.match(b"")) self.assertFalse(Bzip2Scanner.match(b"\x42\x5A\x68")) # Wrong signature self.assertFalse(Bzip2Scanner.match(b"\x42\x5A\x69")) # Wrong version self.assertFalse(Bzip2Scanner.match(b"\x42\x5A\x68\x30\x31\x41\x59\x26\x53\x59")) # Wrong block size self.assertFalse(Bzip2Scanner.match(b"\x42\x5A\x68\x31\x30\x41\x59\x26\x53\x59")) ================================================ FILE: tests/deep_scanner/test_crx_scanner.py ================================================ import unittest from credsweeper.deep_scanner.crx_scanner import CrxScanner from tests import AZ_DATA class TestCrxScanner(unittest.TestCase): def test_match_p(self): self.assertTrue(CrxScanner.match(b'Cr24\x02\x00\x00\x00' + b'\0' * 32)) self.assertTrue(CrxScanner.match(b'Cr24\x03\x00\x00\x00' + b'\0' * 32)) def test_match_n(self): # wrong data type with self.assertRaises(AttributeError): self.assertFalse(CrxScanner.match(None)) with self.assertRaises(AttributeError): self.assertFalse(CrxScanner.match(1)) # few bytes than required self.assertFalse(CrxScanner.match(b'Cr24\x02\x00\x00\x00' + b'\0' * 16)) self.assertFalse(CrxScanner.match(AZ_DATA)) def test_zip_extract_p(self): self.assertEqual(b'', CrxScanner.zip_extract(b'\0' * 16)) self.assertEqual(AZ_DATA, CrxScanner.zip_extract(b'\0' * 16 + AZ_DATA)) def test_zip_extract_n(self): # wrong data type with self.assertRaises(TypeError): self.assertFalse(CrxScanner.zip_extract(None)) ================================================ FILE: tests/deep_scanner/test_csv_scanner.py ================================================ import random import unittest from _csv import Error from credsweeper.deep_scanner.csv_scanner import CsvScanner from tests import AZ_STRING, SAMPLES_PATH, AZ_DATA class TestCsvScanner(unittest.TestCase): def setUp(self): self.maxDiff = None def test_match_n(self): # even random data may look like a CSV random_data = random.randbytes(random.randint(4, 16)) self.assertFalse(CsvScanner.match(random_data), random_data) self.assertFalse(CsvScanner.match(b'')) self.assertFalse(CsvScanner.match(b'||||')) self.assertFalse(CsvScanner.match(AZ_DATA)) self.assertFalse(CsvScanner.match(AZ_DATA + b'\r\n')) def test_match_p(self): self.assertTrue(CsvScanner.match(b'a|b\r1|2')) self.assertTrue(CsvScanner.match(b'a|b\n1|2')) self.assertTrue(CsvScanner.match(b'a|b\r\n1|2')) def test_get_structure_n(self): with self.assertRaises(ValueError): CsvScanner.get_structure('First line,"and escaped,coma"\nSecond,line,with more comas\n') with self.assertRaises(ValueError): CsvScanner.get_structure("First,line\nSecond,line,with,more,comas") with self.assertRaises(Error): CsvScanner.get_structure(f"{AZ_STRING[:19]}\n{AZ_STRING[20:]}\n") with self.assertRaises(Error): CsvScanner.get_structure("'user and password'\nadmin&tizen\n") with self.assertRaises(ValueError): CsvScanner.get_structure('') with self.assertRaises(Error): CsvScanner.get_structure("user&password\nadmin&tizen\n") with self.assertRaises(Error): CsvScanner.get_structure('"user and password"\nadmin&tizen\n') with self.assertRaises(ValueError): CsvScanner.get_structure("user,password\tadmin,tizen\t") def test_get_structure_from_sample_n(self): with self.assertRaises(ValueError): with open(SAMPLES_PATH / "aws_client_id") as f: CsvScanner.get_structure(f.read()) def test_get_structure_p(self): structure = CsvScanner.get_structure("user,password\nadmin,tizen\nempty,\n") self.assertIsInstance(structure, list) self.assertEqual(2, len(structure)) self.assertDictEqual({'password': 'tizen', 'user': 'admin'}, structure[0]) self.assertDictEqual({'password': '', 'user': 'empty'}, structure[1]) #CsvScanner.get_structure("Feuer und Wasser\ncommt nicht zusammen\n") ================================================ FILE: tests/deep_scanner/test_deb_scanner.py ================================================ import unittest from credsweeper.deep_scanner.deb_scanner import DebScanner class TestDebScanner(unittest.TestCase): def test_match_p(self): # Valid deb archive signature self.assertTrue(DebScanner.match(b"!\n")) self.assertTrue(DebScanner.match(b"!\nmore data here")) def test_match_n(self): # Wrong data type with self.assertRaises(AttributeError): DebScanner.match(None) with self.assertRaises(AttributeError): DebScanner.match(1) # Too short self.assertFalse(DebScanner.match(b"")) self.assertFalse(DebScanner.match(b"!")) # Wrong signature self.assertFalse(DebScanner.match(b"\n")) self.assertFalse(DebScanner.match(b"!")) self.assertFalse(DebScanner.match(b"!\r")) ================================================ FILE: tests/deep_scanner/test_deep_scanner.py ================================================ import unittest from hypothesis import given, strategies from credsweeper.deep_scanner.deep_scanner import DeepScanner from credsweeper.file_handler.descriptor import Descriptor from tests import AZ_DATA, AZ_STRING class TestDeepScanner(unittest.TestCase): def test_get_deep_scanners_n(self): self.assertEqual(([], []), DeepScanner.get_deep_scanners(None, Descriptor('', '', ''), 0)) self.assertEqual(([], []), DeepScanner.get_deep_scanners(b'', Descriptor('', '', ''), 0)) self.assertEqual(([], []), DeepScanner.get_deep_scanners(b'0xFF', Descriptor('', '', ''), 0)) @given(strategies.binary()) def test_get_deep_scanners_n(self, data): # no exception should be raised x, y = DeepScanner.get_deep_scanners(data, Descriptor('', '', ''), 0) # no fallback scanners for depth=0 self.assertListEqual([], y) def test_is_media_n(self): with self.assertRaises(TypeError): self.assertFalse(DeepScanner.is_media(None)) with self.assertRaises(IndexError): self.assertFalse(DeepScanner.is_media(b'')) self.assertFalse(DeepScanner.is_media(AZ_STRING)) self.assertFalse(DeepScanner.is_media(AZ_DATA)) self.assertFalse(DeepScanner.is_media(b"\0\0\0\0")) self.assertFalse(DeepScanner.is_media(b"III. Password is Gehe1mnis!")) self.assertFalse(DeepScanner.is_media(b"\xFF\xFEu\x00t\x00f\x001\x006\x00")) self.assertFalse(DeepScanner.is_media(b"GIF89a format cannot store data inside\n\tHowever a picture can\r\n")) self.assertFalse(DeepScanner.is_media(b"BMP is a picture")) def test_is_media_p(self): self.assertTrue(DeepScanner.is_media(b"\x89PNG\x0D\x0A\x1A\x0A...can store text chunks")) self.assertTrue(DeepScanner.is_media(b"\xFF\xD8\xFF\xE1+\x84Exif\0\0*\0")) self.assertTrue(DeepScanner.is_media(b"GIF89a null terminated string\0")) self.assertTrue(DeepScanner.is_media(b"BMP!\0\0\0\0")) ================================================ FILE: tests/deep_scanner/test_eml_scanner.py ================================================ import unittest from credsweeper.deep_scanner.eml_scanner import EmlScanner class TestEmlScanner(unittest.TestCase): def test_match_p(self): # Valid EML format with all required headers eml_data = b"Date: Mon, 1 Jan 2024 12:00:00 +0000\nFrom: sender@example.com\nTo: recipient@example.com\nSubject: Test Email\n\nEmail body" self.assertTrue(EmlScanner.match(eml_data)) # EML format with headers at the beginning eml_data2 = b"Date: Mon, 1 Jan 2024 12:00:00 +0000\nFrom: sender@example.com\nTo: recipient@example.com\nSubject: Test Email" self.assertTrue(EmlScanner.match(eml_data2)) def test_match_n(self): # Wrong data type with self.assertRaises(TypeError): EmlScanner.match(None) with self.assertRaises(TypeError): EmlScanner.match(1) # Missing required headers self.assertFalse( EmlScanner.match(b"Date: Mon, 1 Jan 2024 12:00:00 +0000\nFrom: sender@example.com\nSubject: Test Email")) self.assertFalse(EmlScanner.match(b"From: sender@example.com\nTo: recipient@example.com\nSubject: Test Email")) self.assertFalse( EmlScanner.match(b"Date: Mon, 1 Jan 2024 12:00:00 +0000\nTo: recipient@example.com\nSubject: Test Email")) self.assertFalse( EmlScanner.match( b"Date: Mon, 1 Jan 2024 12:00:00 +0000\nFrom: sender@example.com\nTo: recipient@example.com")) # Wrong format self.assertFalse(EmlScanner.match(b"This is not an email")) self.assertFalse(EmlScanner.match(b"Date: Mon, 1 Jan 2024 12:00:00 +0000\nFrom: sender@example.com")) ================================================ FILE: tests/deep_scanner/test_encoder_scanner.py ================================================ import string import unittest from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.deep_scanner.encoder_scanner import EncoderScanner from tests import AZ_DATA class TestEncoderScanner(unittest.TestCase): def test_match_n(self): with self.assertRaises(TypeError): EncoderScanner.match(None) self.assertFalse(EncoderScanner.match(b"")) self.assertFalse(EncoderScanner.match(AZ_DATA)) self.assertFalse(EncoderScanner.match(b"ba4e4d89-dead-beef-c0fe-913bc57ff132")) self.assertFalse(EncoderScanner.match(b"/Some/Path.extension")) self.assertFalse(EncoderScanner.match(b"1-various+SYMBOLS")) self.assertFalse(EncoderScanner.match(string.digits.encode())) self.assertFalse(EncoderScanner.match(string.ascii_letters.encode())) self.assertFalse(EncoderScanner.match(string.ascii_lowercase.encode())) self.assertFalse(EncoderScanner.match(string.ascii_uppercase.encode())) self.assertFalse(EncoderScanner.match(string.printable.encode())) self.assertFalse(EncoderScanner.match(b'A' * MAX_LINE_LENGTH + b"E2e4")) self.assertFalse(EncoderScanner.match(b'a' * MAX_LINE_LENGTH + b"E2e4")) self.assertFalse(EncoderScanner.match(b'0' * MAX_LINE_LENGTH + b"E2e4")) self.assertFalse(EncoderScanner.match(b"TooSh0rt")) def test_match_p(self): self.assertTrue( EncoderScanner.match( b'\xFF\xFE\x00X\x00G\x005\x00n\x00a\x00X\x00R\x00f\x00d\x00G\x009\x00r\x00Z\x00W\x004\x00g\x00P' b'\x00S\x00A\x00i\x00Z\x002\x00l\x00y\x00Z\x00W\x009\x00n\x00a\x00W\x00N\x00y\x00Y\x00W\x00N' b'\x00r\x00b\x00G\x00V\x00j\x00c\x00m\x00\r\x00\n\x00F\x00j\x00a\x002\x00x\x00l\x00M\x00T\x00I' b'\x00z\x00M\x00T\x00U\x002\x00N\x00z\x00E\x005\x00M\x00D\x00E\x00x\x00M\x00z\x00Q\x00x\x00M\x00z' b'\x00k\x004\x00M\x00S\x00J\x00c\x00b\x00l\x00x\x00u\x00C\x00g\x00=\x00=\x00\r\x00\n\x00\r\x00\n')) self.assertTrue(EncoderScanner.match(b"E2e4\n\tnext line")) self.assertTrue(EncoderScanner.match(b"E2e4a1++//==")) ================================================ FILE: tests/deep_scanner/test_gzip_scanner.py ================================================ import unittest from credsweeper.deep_scanner.gzip_scanner import GzipScanner class TestGzipScanner(unittest.TestCase): def test_match_p(self): self.assertTrue(GzipScanner.match(b'\x1f\x8b\x08')) self.assertTrue(GzipScanner.match(b'\x1f\x8b\x08xxx')) def test_match_n(self): with self.assertRaises(AttributeError): self.assertFalse(GzipScanner.match(None)) self.assertFalse(GzipScanner.match(b'\x1f')) self.assertFalse(GzipScanner.match(b'\x1f\x8bxxx')) self.assertFalse(GzipScanner.match(b'\x1f\x8b\x02')) ================================================ FILE: tests/deep_scanner/test_html_scanner.py ================================================ import unittest from credsweeper.deep_scanner.html_scanner import HtmlScanner class TestHtmlScanner(unittest.TestCase): def test_match_n(self): self.assertFalse(HtmlScanner.match(b"")) with self.assertRaises(AttributeError): HtmlScanner.match(None) def test_match_p(self): self.assertTrue(HtmlScanner.match(b"
    ")) ================================================ FILE: tests/deep_scanner/test_jclass_scanner.py ================================================ import base64 import io import struct import unittest from credsweeper.deep_scanner.jclass_scanner import JclassScanner from tests import AZ_DATA SAMPLE_B64 = """ yv66vgAAAEEAaQoAAgADBwAEDAAFAAYBABBqYXZhL2xhbmcvT2JqZWN0AQAGPGluaXQ+AQADKClWEgAAAAgMAAkACgEAA3J1bgEAFigpTGphdmEvbGFuZy9S dW5uYWJsZTsLAAwADQcADgwACQAGAQASamF2YS9sYW5nL1J1bm5hYmxlCQAQABEHABIMABMAFAEAEGphdmEvbGFuZy9TeXN0ZW0BAANvdXQBABVMamF2YS9p by9QcmludFN0cmVhbTsHABYBAAZTYW1wbGUKABgAGQcAGgwAGwAcAQATamF2YS9pby9QcmludFN0cmVhbQEAB3ByaW50bG4BAAQoWilWCgAYAB4MABsAHwEA BChDKVYIACEBACRiYWNlNGQxOS1iZWVmLWNhZmUtY29vMS05MTI5NDc0YmNkODEKABgAIwwAGwAkAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWBQAAAAB3NhXZ CgAYACgMABsAKQEABChKKVYGQBdu4XWCSM4KABgALQwAGwAuAQAEKEQpVgoAFQADCgAVAA0IAAkBAAxKQVZBX0JPT0xFQU4BAAFaAQANQ29uc3RhbnRWYWx1 ZQMAAAABAQAJSkFWQV9DSEFSAQABQwMAAABYAQAJSkFWQV9CWVRFAQABQgMAAAB7AQAKSkFXQV9TSE9SVAEAAVMDAAABXgEACEpBVkFfSU5UAQABSQMAAIAA AQAJSkFWQV9MT05HAQABSgUAAAAAdzWUAAEACkpBVkFfRkxPQVQBAAFGBEBI9cMBAAtKQVZBX0RPVUJMRQEAAUQGQAW/CosEkZsBAAtKQVZBX1NUUklORwEA EkxqYXZhL2xhbmcvU3RyaW5nOwEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAANsb2cBAARtYWluAQAWKFtMamF2YS9sYW5nL1N0cmluZzspVgEADGxhbWJk YSRydW4kMAEAClNvdXJjZUZpbGUBAAtTYW1wbGUuamF2YQEAEEJvb3RzdHJhcE1ldGhvZHMQAAYPBgBaCgAVAFsMAFQABg8GAF0KAF4AXwcAYAwAYQBiAQAi amF2YS9sYW5nL2ludm9rZS9MYW1iZGFNZXRhZmFjdG9yeQEAC21ldGFmYWN0b3J5AQDMKExqYXZhL2xhbmcvaW52b2tlL01ldGhvZEhhbmRsZXMkTG9va3Vw O0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvaW52b2tlL01ldGhvZFR5cGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTtMamF2YS9sYW5nL2lu dm9rZS9NZXRob2RIYW5kbGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTspTGphdmEvbGFuZy9pbnZva2UvQ2FsbFNpdGU7AQAMSW5uZXJDbGFzc2Vz BwBlAQAlamF2YS9sYW5nL2ludm9rZS9NZXRob2RIYW5kbGVzJExvb2t1cAcAZwEAHmphdmEvbGFuZy9pbnZva2UvTWV0aG9kSGFuZGxlcwEABkxvb2t1cAAh ABUAAgABAAwACQAaADIAMwABADQAAAACADUAGgA2ADcAAQA0AAAAAgA4ABoAOQA6AAEANAAAAAIAOwAaADwAPQABADQAAAACAD4AGgA/AEAAAQA0AAAAAgBB ABoAQgBDAAEANAAAAAIARAAaAEYARwABADQAAAACAEgAGgBJAEoAAQA0AAAAAgBLABoATQBOAAEANAAAAAIAIAAFAAEABQAGAAEATwAAAB0AAQABAAAABSq3 AAGxAAAAAQBQAAAABgABAAAABAABAAkABgABAE8AAAAtAAEAAgAAAA26AAcAAEwruQALAQCxAAAAAQBQAAAADgADAAAAEgAGABMADAAUAAEAUQAGAAEATwAA AFYAAwABAAAAKrIADwS2ABeyAA8QWLYAHbIADxIgtgAisgAPFAAltgAnsgAPFAAqtgAssQAAAAEAUAAAABoABgAAABcABwAYAA8AGQAXABoAIAAbACkAHAAJ AFIAUwABAE8AAAAnAAIAAQAAAAu7ABVZtwAvtgAwsQAAAAEAUAAAAAoAAgAAAB8ACgAgEAoAVAAGAAEATwAAACEAAgAAAAAACbIADxIxtgAisQAAAAEAUAAA AAYAAQAAABIAAwBVAAAAAgBWAFcAAAAMAAEAXAADAFgAWQBYAGMAAAAKAAEAZABmAGgAGQ== """ class TestJclassScanner(unittest.TestCase): def setUp(self): self.maxDiff = None def test_get_utf8_constants_n(self): with self.assertRaises(AttributeError): JclassScanner.get_utf8_constants(None) with self.assertRaises(struct.error): JclassScanner.get_utf8_constants(io.BytesIO(b'')) self.assertListEqual([], JclassScanner.get_utf8_constants(io.BytesIO(AZ_DATA))) def test_get_utf8_constants_p(self): data = base64.b64decode(SAMPLE_B64) self.assertListEqual([ 'java/lang/Object', '', '()V', 'run', '()Ljava/lang/Runnable;', 'java/lang/Runnable', 'java/lang/System', 'out', 'Ljava/io/PrintStream;', 'Sample', 'java/io/PrintStream', 'println', '(Z)V', '(C)V', 'bace4d19-beef-cafe-coo1-9129474bcd81', '(Ljava/lang/String;)V', '(J)V', '(D)V', 'JAVA_BOOLEAN', 'Z', 'ConstantValue', 'JAVA_CHAR', 'C', 'JAVA_BYTE', 'B', 'JAWA_SHORT', 'S', 'JAVA_INT', 'I', 'JAVA_LONG', 'J', 'JAVA_FLOAT', 'F', 'JAVA_DOUBLE', 'D', 'JAVA_STRING', 'Ljava/lang/String;', 'Code', 'LineNumberTable', 'log', 'main', '([Ljava/lang/String;)V', 'lambda$run$0', 'SourceFile', 'Sample.java', 'BootstrapMethods', 'java/lang/invoke/LambdaMetafactory', 'metafactory', ('(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;' 'Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;' ')Ljava/lang/invoke/CallSite;'), 'InnerClasses', 'java/lang/invoke/MethodHandles$Lookup', 'java/lang/invoke/MethodHandles', 'Lookup' ], JclassScanner.get_utf8_constants(io.BytesIO(data[8:]))) def test_match_p(self): # Valid Java class file signature (0xCAFEBABE) self.assertTrue(JclassScanner.match(b"\xCA\xFE\xBA\xBE")) self.assertTrue(JclassScanner.match(b"\xCA\xFE\xBA\xBE\x00\x00")) def test_match_n(self): # Wrong data type with self.assertRaises(AttributeError): JclassScanner.match(None) with self.assertRaises(AttributeError): JclassScanner.match(1) # Too short self.assertFalse(JclassScanner.match(b"")) self.assertFalse(JclassScanner.match(b"\xCA\xFE\xBA")) # Wrong signature self.assertFalse(JclassScanner.match(b"\xCA\xFE\xBA\xBF")) self.assertFalse(JclassScanner.match(b"\xBE\xBA\xFE\xCA")) ================================================ FILE: tests/deep_scanner/test_jks_scanner.py ================================================ import unittest from credsweeper.deep_scanner.jks_scanner import JksScanner class TestJksScanner(unittest.TestCase): def test_match_p(self): # Valid Java KeyStore signature self.assertTrue(JksScanner.match(b"\xFE\xED\xFE\xED")) self.assertTrue(JksScanner.match(b"\xFE\xED\xFE\xED\x00\x00")) def test_match_n(self): # Wrong data type with self.assertRaises(AttributeError): JksScanner.match(None) with self.assertRaises(AttributeError): JksScanner.match(1) # Too short self.assertFalse(JksScanner.match(b"")) self.assertFalse(JksScanner.match(b"\xFE\xED\xFE")) # Wrong signature self.assertFalse(JksScanner.match(b"\xFE\xED\xFE\xEF")) self.assertFalse(JksScanner.match(b"\xED\xFE\xED\xFE")) ================================================ FILE: tests/deep_scanner/test_lzma_scanner.py ================================================ import unittest from credsweeper.deep_scanner.lzma_scanner import LzmaScanner class TestLzmaScanner(unittest.TestCase): def test_match_p(self): # Valid LZMA signature (XZ format) self.assertTrue(LzmaScanner.match(b"\xFD7zXZ\x00")) # Valid LZMA signature (legacy format) self.assertTrue(LzmaScanner.match(b"\x5D\x00\x00")) self.assertTrue(LzmaScanner.match(b"\xFD7zXZ\x00\x00\x00\x00\x00")) def test_match_n(self): # Wrong data type with self.assertRaises(AttributeError): LzmaScanner.match(None) with self.assertRaises(AttributeError): LzmaScanner.match(1) # Too short self.assertFalse(LzmaScanner.match(b"")) self.assertFalse(LzmaScanner.match(b"\x5D\x00")) # Wrong signature self.assertFalse(LzmaScanner.match(b"\xFD7zXY\x00")) self.assertFalse(LzmaScanner.match(b"\x5D\x00\x01")) self.assertFalse(LzmaScanner.match(b"\xFE7zXZ\x00")) ================================================ FILE: tests/deep_scanner/test_mxfile_scanner.py ================================================ import unittest from credsweeper.deep_scanner.mxfile_scanner import MxfileScanner class TestMxfileScanner(unittest.TestCase): def test_match_n(self): self.assertFalse(MxfileScanner.match(b"")) self.assertFalse(MxfileScanner.match(b"")) with self.assertRaises(AttributeError): MxfileScanner.match(None) with self.assertRaises(AttributeError): MxfileScanner.match(1) def test_match_p(self): self.assertTrue(MxfileScanner.match(b"
    ")) ================================================ FILE: tests/deep_scanner/test_pdf_scanner.py ================================================ import unittest from credsweeper.deep_scanner.pdf_scanner import PdfScanner class TestPdfScanner(unittest.TestCase): def test_match_p(self): self.assertTrue(PdfScanner.match(b'\x25\x50\x44\x46\x2D')) self.assertTrue(PdfScanner.match(b'%PDF-!')) def test_match_n(self): with self.assertRaises(AttributeError): self.assertFalse(PdfScanner.match(None)) self.assertFalse(PdfScanner.match(b'')) self.assertFalse(PdfScanner.match(b'%PDF+')) ================================================ FILE: tests/deep_scanner/test_png_scanner.py ================================================ import base64 import unittest from credsweeper.deep_scanner.png_scanner import PngScanner sample_png_b64 = """ iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAAAAADhZOFXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUw AADqYAAAOpgAABdwnLpRPAAAACx0RVh0Q29tbWVudABlN2RiYTljMS1kZWFkLWJlZWYtY2FmZS02MTM5NDc0YmNmODKLJWKsAAAAEElEQVQI12P8zwABTAwU MQBJQQEPsgmdYgAAAABJRU5ErkJggg== """ class TestPngScanner(unittest.TestCase): def setUp(self): self.maxDiff = None def test_match_n(self): with self.assertRaises(AttributeError): PngScanner.match(None) self.assertFalse(PngScanner.match(b'')) def test_match_p(self): self.assertTrue(PngScanner.match(b'\x89PNG\r\n\x1a\n')) self.assertTrue(PngScanner.match(base64.b64decode(sample_png_b64))) def test_yield_png_chunks_p(self): self.assertListEqual([(114, 'PNG_TEXT:Comment', b'e7dba9c1-dead-beef-cafe-6139474bcf82')], list(PngScanner.yield_png_chunks(base64.b64decode(sample_png_b64)))) ================================================ FILE: tests/deep_scanner/test_rtf_scanner.py ================================================ import unittest from credsweeper.deep_scanner.rtf_scanner import RtfScanner SIMPLE_SAMPLE = rb"""{\rtf1\ansi\deff3\adeflang1025 {\dbch \u48708\'3f\u48128\'3f\u48264\'3f\u54840\'3f}{\loch :pR5!Db@} \par }""" class TestRtfScanner(unittest.TestCase): def setUp(self): self.maxDiff = None def test_get_lines_n(self): self.assertListEqual([''], RtfScanner.get_lines(r"{\rtf1}")) def test_get_lines_p(self): self.assertListEqual(['비밀번호:pR5!Db@', ''], RtfScanner.get_lines(SIMPLE_SAMPLE.decode())) ================================================ FILE: tests/deep_scanner/test_sqlite3_scanner.py ================================================ import unittest from credsweeper.deep_scanner.sqlite3_scanner import Sqlite3Scanner from tests import SAMPLE_SQLITE class TestSqlite3Scanner(unittest.TestCase): def setUp(self): self.maxDiff = None def test_walk_n(self): with self.assertRaises(TypeError): list(Sqlite3Scanner.walk_sqlite(None)) def test_walk_p(self): self.assertListEqual([('KEYS', { 'ID': -1, 'KEY': None }), ('KEYS', { 'ID': 1, 'KEY': b'0\x82\x01=\x02\x01\x00\x02A\x00\xaf\xa2\x08\xbf\\U\xc2\xb8`\xa1' b'z~(\xe5\x03\x84\xbas\x10\xf8;]\xa1\xb6\xbd\xf1\xda8\x1d>' b'\xf8\x9c\xd6\x9e\x9b\xdf\x8a.\x01\xa25s\xae\xb9\t\x8d\xc1\xc4\x03O' b'{\xe4))\xd5\xb2\xa9\xfe\xcc\x18\xaf\xca\x87g\x02\x03' b'\x01\x00\x01\x02A\x00\x90P\xc9uLN\xdf\xe8\x96\xe68\xfb\xcfh' b'\x96\xe2\x8a> \x94\x88[`\x95\x030\xe6\xc9\xb3&Z+Q\x14\x80Y\xb6L' b"O\xff%-\x93\xca\xf2\xb0\x0f\xcc\x9aQJ\x03,'\x86\xca\xab\x87" b'\xf9JY\xc2\xcfq\x02!\x00\xd8\xcd\x0f\xdft-0-\xa9\xed/_\xa0\xbf\x96' b'\xdd\xe9=\x06\xcb\x8au\x7fR\xfb\xf7M9\xfb\xae\xe8Y\x02!\x00\xcfcsB' b'\x9fc\xba\xf53\xdd\x95a\x81\xf7\xab\xd36\xd6\x94\xbcS\xe7gR' b'\x00\\\xf0\x01e\x9e\xf5\xbf\x02!\x00\xcd\xf3W]\xcd\xaeS\xb3=Vm\x07i' b'\xdc7\x04M\xdaDG=\x1b\xcb=X\xd0\x9f\xd32-\x00\xd9\x02!\x00\xa9P' b'W,\x806\x8a\xcf_}\xbbTu(@\x16\xdb\x81\x8a\xc2\xcayt\xc7\xe4\xd5' b'\xfbx\x18\x80\x13\xbf\x02!\x00\xcc\x88\xf9P\xdc\xdf\x85ni\x80\x9c' b'\x0c\x1f=F\xfeq\xfa\x11\xad%1)~\xaeJ\xadR\x8aQ\xd0\x89' }), ('USERS', { 'ID': 1, 'PASSWORD': 'Dt1Js8m#1s', 'TOKEN': 'xoxa-FLYLIKEAGIREOGI-b1da04e31f', 'USER': '1d3e45d1-dead-beef-c0de-294622932701' }), ('USERS', { 'ID': 2, 'PASSWORD': 'password', 'TOKEN': '1d3e45d1deadbeefc0de29beda932701', 'USER': 'user' })], list(Sqlite3Scanner.walk_sqlite(SAMPLE_SQLITE.read_bytes()))) ================================================ FILE: tests/deep_scanner/test_strings_scanner.py ================================================ import unittest from hypothesis import given, strategies from credsweeper.deep_scanner.strings_scanner import StringsScanner class TestStringsScanner(unittest.TestCase): def setUp(self): self.maxDiff = None @given(strategies.binary()) def test_get_lines_hypothesis_n(self, data): self.assertIsNotNone(StringsScanner.get_enumerated_lines(data)) def test_get_lines_n(self): self.assertListEqual([], StringsScanner.get_enumerated_lines(b'')) self.assertListEqual([], StringsScanner.get_enumerated_lines(b'\x00\xBE')) self.assertListEqual([], StringsScanner.get_enumerated_lines(b'\x9F\xBEP\xE3\xb4W\xA5:\xF1R\x9C00\xcf\x84t!')) self.assertListEqual([], StringsScanner.get_enumerated_lines(b'\x00\x01\x02PW:R00t\x0D\x00')) def test_get_lines_p(self): self.assertListEqual([(3, "PW:R00t!")], StringsScanner.get_enumerated_lines(b'\x00\x01\x02PW:R00t!\x0D\x00')) self.assertListEqual([(0, "PW:R00t!")], StringsScanner.get_enumerated_lines(b'PW:R00t!\x0D\x00')) self.assertListEqual([(4, "PW:R00t!")], StringsScanner.get_enumerated_lines(b'\x00\x01\x02\x03PW:R00t!')) self.assertListEqual( [(9, 'Salt:CwXD\t3dsd'), (24, 'Token:SOMETEST')], StringsScanner.get_enumerated_lines(b'\x9F\xBEP\xE3\xb4W\xA5:\xFFSalt:CwXD\x093dsd\nToken:SOMETEST\0')) ================================================ FILE: tests/deep_scanner/test_struct_scanner.py ================================================ import unittest from credsweeper.app import APP_PATH from credsweeper.common.constants import MAX_LINE_LENGTH, Severity from credsweeper.config.config import Config from credsweeper.deep_scanner.deep_scanner import DeepScanner from credsweeper.file_handler.struct_content_provider import StructContentProvider from credsweeper.scanner.scanner import Scanner from credsweeper.utils.util import Util class TestStructScanner(unittest.TestCase): def setUp(self): self.maxDiff = None # default config config = Util.json_load(APP_PATH / "secret" / "config.json") config["pedantic"] = False config["depth"] = 0 config["doc"] = False config["use_filters"] = True config["find_by_ext"] = False config["size_limit"] = None config["severity"] = Severity.LOW self.config = Config(config) self.scanner = DeepScanner(config=self.config, scanner=Scanner(self.config, None)) def test_scan_n(self): provider = StructContentProvider(None) self.assertListEqual([], self.scanner.structure_scan(provider, 3, MAX_LINE_LENGTH)) def test_scan_p(self): sample = { 'API': '\t\t\t !!! \r\n', # strip does small value 'aUtH': b'\t\t\t !!! \r\n', # bytes are not stripped, 'dummy': None, 'self': self, 'Certificate': 3.14, 'cReDeNtIaL': 42, 'PASSWORD': 'Dt1Js8m#1s', 'Nonce': b'9jY*g76f65D4d5rdy', 'Key': 'MII5cCI6NiIsInRIkpXV', 'salt': b"\t'\xDE\xAD\xBE\xEF,1\012\0", 'key': 'Token', 'value': '\t-dead-beef-c0de-\n', } provider = StructContentProvider(sample) self.assertListEqual( [('Auth', 'aUtH', '\\t\\t\\t !!! \\r\\n', "aUtH = b'\\t\\t\\t !!! \\r\\n'"), ('Key', 'Key', 'MII5cCI6NiIsInRIkpXV', "Key = 'MII5cCI6NiIsInRIkpXV'"), ('Nonce', 'Nonce', "9jY*g76f65D4d5rdy", "Nonce = b'9jY*g76f65D4d5rdy'"), ('Password', 'PASSWORD', 'Dt1Js8m#1s', "PASSWORD = 'Dt1Js8m#1s'"), ('Salt', 'salt', "\\t\'\\xde\\xad\\xbe\\xef,1\\n\\x00", 'salt = b"\\t\'\\xde\\xad\\xbe\\xef,1\\n\\x00"'), ('Token', 'Token', '-dead-beef-c0de-', "Token = '-dead-beef-c0de-'")], sorted([(x.rule_name, x.line_data_list[0].variable, x.line_data_list[0].value, x.line_data_list[0].line) for x in self.scanner.structure_scan(provider, 3, MAX_LINE_LENGTH)])) ================================================ FILE: tests/deep_scanner/test_tar_scanner.py ================================================ import base64 import unittest import zlib from credsweeper.deep_scanner.tar_scanner import TarScanner class TestTarScanner(unittest.TestCase): def test_match_p(self): # there is 10240 bytes of simple tar file tar_zlib_base64 = (b"eJztzzEOwjAQBMCreYWfYIfEfk9eEMmY/2NRUoAoIoQ002xxW+yNvcfZ8lTr+szpNac1ylaWVuqWW41c8tKukfLpy6" b"b7bew9pejHMd71Pt3/1Hz+8usNAAAAAAAAAAAAfO8BVeUSWg==") # there is a tar file with single file and without compression data = zlib.decompress(base64.b64decode(tar_zlib_base64)) self.assertTrue(TarScanner.match(data)) def test_match_n(self): # Wrong data type with self.assertRaises(TypeError): TarScanner.match(None) with self.assertRaises(TypeError): TarScanner.match(1) # Too short self.assertFalse(TarScanner.match(b"")) self.assertFalse(TarScanner.match(b"\x00" * 100)) # Wrong magic tar_data = b"\x00" * 512 tar_data = tar_data[:257] + b"wrong!" + tar_data[263:] self.assertFalse(TarScanner.match(tar_data)) ================================================ FILE: tests/deep_scanner/test_tmx_scanner.py ================================================ import unittest from credsweeper.deep_scanner.tmx_scanner import TmxScanner class TestTmxScanner(unittest.TestCase): def test_match_p(self): # Valid TMX format with ThreatModel tags tmx_data = b"Some content" self.assertTrue(TmxScanner.match(tmx_data)) # Valid TMX format with KnowledgeBase tags tmx_data2 = b"Some content" self.assertTrue(TmxScanner.match(tmx_data2)) # TMX format with additional content tmx_data3 = b"Some prefix content some suffix" self.assertTrue(TmxScanner.match(tmx_data3)) def test_match_n(self): # Wrong data type with self.assertRaises(AttributeError): TmxScanner.match(None) with self.assertRaises(AttributeError): TmxScanner.match(1) # Missing or incomplete tags self.assertFalse(TmxScanner.match(b"")) self.assertFalse(TmxScanner.match(b"")) self.assertFalse(TmxScanner.match(b"")) self.assertFalse(TmxScanner.match(b"")) # Wrong order self.assertFalse(TmxScanner.match(b"")) self.assertFalse(TmxScanner.match(b"")) # Different tags self.assertFalse(TmxScanner.match(b"content")) self.assertFalse(TmxScanner.match(b"content")) ================================================ FILE: tests/deep_scanner/test_xml_scanner.py ================================================ import unittest from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.deep_scanner.xml_scanner import XmlScanner class TestXmlScanner(unittest.TestCase): def test_match_n(self): with self.assertRaises(TypeError): XmlScanner.match(None) self.assertFalse(XmlScanner.match(b'')) self.assertFalse(XmlScanner.match(b"!<>")) self.assertFalse(XmlScanner.match(b"")) self.assertFalse(XmlScanner.match(b"

    ")) self.assertFalse(XmlScanner.match(b"
    ")) self.assertFalse( XmlScanner.match(bytearray(b'\n' * MAX_LINE_LENGTH) + bytearray(b" far far away"))) self.assertFalse(XmlScanner.match(b" unmatched tags ")) self.assertFalse(XmlScanner.match(b"")) def test_match_p(self): self.assertTrue(XmlScanner.match(b" matched tags ")) self.assertTrue(XmlScanner.match(b"
    ")) self.assertTrue( XmlScanner.match( bytearray(b'\n far far away ') + bytearray(b'\n' * MAX_LINE_LENGTH) + bytearray(b' long long ago '))) ================================================ FILE: tests/deep_scanner/test_zip_scanner.py ================================================ import unittest from credsweeper.deep_scanner.zip_scanner import ZipScanner from tests import AZ_DATA class TestZipScanner(unittest.TestCase): def test_match_p(self): self.assertTrue(ZipScanner.match(b'PK\003\004')) # empty archive - no files self.assertTrue(ZipScanner.match(b'PK\x05\x06\x00\x00')) # not supported spanned archive (multi volume) self.assertFalse(ZipScanner.match(b'PK\x07\x08')) def test_match_n(self): # wrong data type with self.assertRaises(AttributeError): self.assertFalse(ZipScanner.match(None)) with self.assertRaises(AttributeError): self.assertFalse(ZipScanner.match(1)) # few bytes than required self.assertFalse(ZipScanner.match(b'')) self.assertFalse(ZipScanner.match(b'P')) self.assertFalse(ZipScanner.match(b'PK')) self.assertFalse(ZipScanner.match(b'PK\003')) # wrong signature self.assertFalse(ZipScanner.match(b'PK\003\003')) # plain text data self.assertFalse(ZipScanner.match(AZ_DATA)) ================================================ FILE: tests/deep_scanner/test_zlib_scanner.py ================================================ import contextlib import itertools import random import sys import unittest import zlib import pytest from hypothesis import given, strategies from credsweeper.common.constants import MAX_LINE_LENGTH, CHUNK_SIZE, CHUNK_STEP_SIZE from credsweeper.deep_scanner.zlib_scanner import ZlibScanner from tests import AZ_DATA ZLIB_DATA = zlib.compress(AZ_DATA) class TestZlibScanner(unittest.TestCase): def setUp(self): self.maxDiff = None @given(strategies.binary()) def test_match_hypothesis_n(self, data): # too hard to find random data which looks like zlib compressed data self.assertFalse(ZlibScanner.match(data)) def test_match_p(self): self.assertTrue(ZlibScanner.match(b'(S)Ljava/lang/Short;')) self.assertTrue(ZlibScanner.match(ZLIB_DATA)) self.assertTrue(ZlibScanner.match(b"XG5FAKE")) @given(strategies.binary()) def test_decompress_hypothesis_n(self, data): # any data are over negative test limit with self.assertRaises(ValueError): ZlibScanner.decompress(-1, data) def test_decompress_static_n(self): with self.assertRaises(zlib.error): ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=AZ_DATA) with self.assertRaises(ValueError): ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=ZLIB_DATA + AZ_DATA) with self.assertRaises(ValueError): ZlibScanner.decompress(limit=10, data=b"XG5FAKE") with self.assertRaises(ValueError): ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=ZLIB_DATA[:-1]) with self.assertRaises(ValueError): ZlibScanner.decompress(limit=1, data=ZLIB_DATA) def test_decompress_static_p(self): self.assertEqual(AZ_DATA, ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=ZLIB_DATA)) # todo: fix when python 3.10 support ends @pytest.mark.skipif(10 == sys.version_info.minor, reason="zlib.compress was changed in 3.11") def test_decompress_n(self): self.assertTrue(CHUNK_STEP_SIZE < CHUNK_SIZE < MAX_LINE_LENGTH) total_counter = check_counter = 0 for level, wbits in itertools.product(list(range(10)), list(range(8, 32))): total_counter += 1 data = random.randbytes(random.randint(CHUNK_SIZE, MAX_LINE_LENGTH)) try: # check combinations which are valid zlib_data = zlib.compress(data, level=level, wbits=wbits) except zlib.error: continue with self.assertRaises((ValueError, zlib.error)): check_counter += 1 ZlibScanner.decompress(CHUNK_STEP_SIZE, zlib_data) self.assertTrue(100 < check_counter < total_counter) # todo: fix when python 3.10 support ends @pytest.mark.skipif(10 == sys.version_info.minor, reason="zlib.compress was changed in 3.11") def test_decompress_p(self): total_counter = check_counter = 0 for level, wbits in itertools.product(list(range(10)), list(range(8, 32))): total_counter += 1 data = random.randbytes(random.randint(0, MAX_LINE_LENGTH)) with contextlib.suppress(zlib.error): # check combinations which are valid zlib_data = zlib.compress(data, level=level, wbits=wbits) self.assertEqual(data, ZlibScanner.decompress(MAX_LINE_LENGTH, zlib_data), str((level, wbits))) self.assertTrue(ZlibScanner.match(zlib_data)) check_counter += 1 self.assertTrue(10 < check_counter < total_counter) ================================================ FILE: tests/file_handler/__init__.py ================================================ ================================================ FILE: tests/file_handler/test_byte_content_provider.py ================================================ import os from typing import List import pytest from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.byte_content_provider import ByteContentProvider from credsweeper.utils.util import Util from tests import SAMPLES_FILES_COUNT, SAMPLES_PATH, AZ_DATA from tests.filters.conftest import DUMMY_DESCRIPTOR class TestByteContentProvider: @pytest.mark.parametrize("lines_as_bytes,lines", [(b"line one\npassword='in_line_2'", ["line one", "password='in_line_2'"])]) def test_get_analysis_target_p(self, lines_as_bytes: bytes, lines: List[str]) -> None: """Evaluate that lines data correctly extracted from file""" content_provider = ByteContentProvider(lines_as_bytes) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] expected_target = AnalysisTarget(0, lines, [x for x in range(len(lines))], DUMMY_DESCRIPTOR) assert len(analysis_targets) == 2 target = analysis_targets[0] assert target.line == expected_target.line def test_byte_content_provider_p(self) -> None: files_counter = 0 for dir_path, _, filenames in os.walk(SAMPLES_PATH): filenames.sort() for filename in filenames: files_counter += 1 file_path = os.path.join(dir_path, filename) util_text = Util.read_file(file_path) with open(file_path, 'rb') as f: bin_data = f.read() provider = ByteContentProvider(bin_data) assert util_text == provider.lines assert files_counter == SAMPLES_FILES_COUNT def test_free_n(self) -> None: # free without cached properties invocation provider1 = ByteContentProvider(AZ_DATA) provider1.free() assert provider1.data is None assert len(provider1.lines) == 0 provider1.free() # free after the invocation provider2 = ByteContentProvider(AZ_DATA) assert AZ_DATA == provider2.data assert len(provider2.lines) == 1 provider2.free() assert provider2.data is None assert len(provider2.lines) == 0 provider2.free() provider2.free() assert provider2.data is None assert len(provider2.lines) == 0 ================================================ FILE: tests/file_handler/test_data_content_provider.py ================================================ import json import os import tempfile import unittest import zipfile from typing import List from unittest.mock import patch from credsweeper.app import CredSweeper from credsweeper.credentials.candidate import Candidate from credsweeper.file_handler.data_content_provider import DataContentProvider from credsweeper.file_handler.files_provider import FilesProvider from tests import SAMPLES_FILES_COUNT, SAMPLES_PATH, AZ_DATA, SAMPLE_ZIP from tests.file_handler.zip_bomb_1 import zb1 from tests.file_handler.zip_bomb_2 import zb2 class DataContentProviderTest(unittest.TestCase): WRONG_ZIP_FILE = b"PK\003\004_WRONG_ZIP_FILE" def test_wrong_xml_n(self) -> None: content_provider1 = DataContentProvider(data=b"") with patch('logging.Logger.debug') as mocked_logger: self.assertFalse(content_provider1.represent_as_xml()) mocked_logger.assert_not_called() content_provider2 = DataContentProvider(data=AZ_DATA) with patch('logging.Logger.debug') as mocked_logger: self.assertFalse(content_provider2.represent_as_xml()) mocked_logger.assert_called_with("Weak data to parse as XML") content_provider3 = DataContentProvider(data=b"") with patch('logging.Logger.debug') as mocked_logger: self.assertFalse(content_provider3.represent_as_xml()) mocked_logger.assert_called() def test_scan_wrong_provider_n(self) -> None: content_provider = DataContentProvider(b"dummy", "dummy") cs = CredSweeper(json_filename="dummy") with self.assertRaises(NotImplementedError): cs.file_scan(content_provider) def test_scan_bottom_reach_n(self) -> None: content_provider = DataContentProvider(self.WRONG_ZIP_FILE, "dummy") cs = CredSweeper(json_filename="dummy") self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 0, 1 << 16))) def test_scan_wrong_zip_data_n(self) -> None: content_provider = DataContentProvider(self.WRONG_ZIP_FILE, "dummy") cs = CredSweeper(json_filename="dummy") self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 1, 1 << 16))) def test_scan_empty_zip_n(self) -> None: content_provider = DataContentProvider( b'PK\x05\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', "dummy") cs = CredSweeper(json_filename="dummy") self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 1, 1 << 16))) def test_scan_zipfile_n(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: report_path = os.path.join(tmp_dir, "report.json") file_path = os.path.join(tmp_dir, "test_n.zip") self.assertFalse(os.path.exists(file_path)) open(file_path, "wb").write(self.WRONG_ZIP_FILE) content_provider = FilesProvider([tmp_dir]) cs = CredSweeper(json_filename=report_path, depth=1) file_extractors = content_provider.get_scannable_files(cs.config) self.assertEqual(1, len(file_extractors)) scan_results = cs.file_scan(file_extractors[0]) self.assertEqual(0, len(scan_results)) self.assertFalse(os.path.isfile(report_path)) def test_scan_zipfile_p(self) -> None: # create new zip archive with all samples with tempfile.TemporaryDirectory() as tmp_dir: report_path_1 = os.path.join(tmp_dir, "report_1.json") report_path_2 = os.path.join(tmp_dir, "report_2.json") cs = CredSweeper(json_filename=report_path_1, find_by_ext=True, depth=7) # calculate samples content_provider = FilesProvider([SAMPLES_PATH]) file_extractors = content_provider.get_scannable_files(cs.config) self.assertLess(1, len(file_extractors)) samples_scan_results: List[Candidate] = [] for file_extractor in file_extractors: samples_scan_results.extend(cs.file_scan(file_extractor)) len_samples_scan_results = len(samples_scan_results) self.assertLess(1, len_samples_scan_results) cs.credential_manager.set_credentials(samples_scan_results) cs.post_processing() cs.export_results() self.assertTrue(os.path.isfile(report_path_1)) with open(report_path_1) as f: report = json.load(f) len_samples_report = len(report) self.assertTrue(1 < len_samples_report < len_samples_scan_results) # change the report file name cs.json_filename = report_path_2 # clean credentials to test zip cs.credential_manager.candidates.clear() self.assertEqual(0, cs.credential_manager.len_credentials()) # use the same approach but with single zip file which is made from the samples zip_file_path = os.path.join(tmp_dir, "test_p.zip") self.assertFalse(os.path.exists(zip_file_path)) samples_file_count = 0 with zipfile.ZipFile(zip_file_path, "a", zipfile.ZIP_DEFLATED, compresslevel=9) as zip_file: for dirpath, dirnames, filenames in os.walk(SAMPLES_PATH): for filename in filenames: filename_in_zip = f"{samples_file_count}/{filename}" if samples_file_count else filename with zip_file.open(filename_in_zip, "w") as output_file: with open(os.path.join(dirpath, filename), "rb") as input_file: output_file.write(input_file.read()) samples_file_count += 1 self.assertEqual(SAMPLES_FILES_COUNT, samples_file_count) content_provider = FilesProvider([zip_file_path]) file_extractors = content_provider.get_scannable_files(cs.config) self.assertEqual(1, len(file_extractors)) # single extractor zip_scan_results = cs.file_scan(file_extractors[0]) # zip scan is used deep scan for source files too # so there might be a delta, because samples have tricky cases self.assertAlmostEqual(len_samples_scan_results, len(zip_scan_results), delta=3) cs.credential_manager.set_credentials(zip_scan_results) cs.post_processing() cs.export_results() self.assertTrue(os.path.isfile(report_path_1)) with open(report_path_1) as f: report = json.load(f) len_samples_report = len(report) self.assertTrue(1 < len_samples_report < len_samples_scan_results) def test_scan_zipfile_size_limit_n(self) -> None: cs = CredSweeper() content_provider = DataContentProvider(open(SAMPLE_ZIP, "rb").read(), SAMPLE_ZIP) self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 3, 4))) def test_scan_zipfile_size_limit_p(self) -> None: cs = CredSweeper() content_provider = DataContentProvider(open(SAMPLE_ZIP, "rb").read(), SAMPLE_ZIP) self.assertEqual(1, len(cs.deep_scanner.recursive_scan(content_provider, 3, 1024))) def test_scan_zipfile_bomb_1_n(self) -> None: # create with depth to remove *.zip extension cs = CredSweeper(depth=2) content_provider = DataContentProvider(zb1, "zip_bomb_1") res_1 = cs.deep_scanner.recursive_scan(content_provider, 2, 1 << 30) self.assertEqual(0, len(res_1)) def test_scan_zipfile_bomb_2_n(self) -> None: # create with depth to remove *.zip extension cs = CredSweeper(depth=4) content_provider = DataContentProvider(zb2, "zip_bomb_2") res_2 = cs.deep_scanner.recursive_scan(content_provider, 16, 1 << 16) self.assertEqual(0, len(res_2)) def test_free_n(self) -> None: provider = DataContentProvider(AZ_DATA) self.assertEqual(AZ_DATA, provider.data) provider.free() self.assertIsNone(provider.data) provider.free() provider.free() ================================================ FILE: tests/file_handler/test_diff_content_provider.py ================================================ import unittest from credsweeper.common.constants import DiffRowType from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.descriptor import Descriptor from credsweeper.file_handler.diff_content_provider import DiffContentProvider, DiffDict, DiffRowData class TestDiffContentProvider(unittest.TestCase): def test_get_analysis_target_p(self) -> None: """Evaluate that added diff lines data correctly added to change_numbers""" file_path = "dumy.file" diff = [ DiffDict({ "old": None, "new": 2, "line": "new line", "hunk": 1 }), DiffDict({ "old": 2, "new": None, "line": "moved line", "hunk": 1 }) ] content_provider = DiffContentProvider(file_path, DiffRowType.ADDED, diff) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] all_lines = ["", "new line", "moved line"] expected_target = AnalysisTarget(1, all_lines, [x for x in range(len(all_lines))], Descriptor(file_path, ".file", DiffRowType.ADDED.value)) self.assertEqual(1, len(analysis_targets)) target = analysis_targets[0] self.assertEqual(expected_target.line, target.line) def test_get_analysis_target_n(self) -> None: """Evaluate that deleted diff lines data correctly filtered for added change type""" file_path = "dumy.file" diff = [ DiffDict({ "old": 2, "new": None, "line": "new line", "hunk": 1 }), DiffDict({ "old": 3, "new": None, "line": "moved line", "hunk": 1 }) ] content_provider = DiffContentProvider(file_path, DiffRowType.ADDED, diff) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] self.assertEqual(0, len(analysis_targets)) def test_parse_lines_data_p(self) -> None: """Evaluate that added diff lines data correctly added to change_numbers""" lines_data = [DiffRowData(DiffRowType.ADDED, 2, "new line")] change_numbs, _all_lines = DiffContentProvider.parse_lines_data(DiffRowType.ADDED, lines_data) expected_numbs = [2] self.assertListEqual(expected_numbs, change_numbs) def test_parse_lines_data_n(self) -> None: """Evaluate that deleted diff lines data correctly filtered for added change type""" lines_data = [DiffRowData(DiffRowType.DELETED, 2, "old line")] change_numbs, _all_lines = DiffContentProvider.parse_lines_data(DiffRowType.ADDED, lines_data) expected_numbs = [] self.assertListEqual(expected_numbs, change_numbs) def test_free_n(self) -> None: diff = [ DiffDict({ "old": 2, "new": None, "line": "new line", "hunk": 1 }), DiffDict({ "old": 3, "new": None, "line": "moved line", "hunk": 1 }) ] provider = DiffContentProvider("file_path", DiffRowType.ADDED, diff) self.assertEqual(2, len(provider.diff)) provider.free() self.assertEqual(0, len(provider.diff)) provider.free() provider.free() def test_data_n(self) -> None: with self.assertRaises(NotImplementedError): _ = DiffContentProvider("file_path", DiffRowType.ADDED, []).data ================================================ FILE: tests/file_handler/test_file_path_extractor.py ================================================ import os.path import re import tempfile import unittest from typing import List from unittest import mock import git from humanfriendly import parse_size from credsweeper.config.config import Config from credsweeper.file_handler.file_path_extractor import FilePathExtractor from tests import AZ_STRING class TestFilePathExtractor(unittest.TestCase): def setUp(self): config_dict = { "size_limit": None, "find_by_ext": False, "find_by_ext_list": [], "doc": False, "pedantic": False, "depth": 0, "exclude": { "path": [], "pattern": [], "containers": [], "documents": [], "extension": [] }, "source_ext": [], "source_quote_ext": [], "bruteforce_list": [], "check_for_literals": [], "use_filters": False, "line_data_output": [], "candidate_output": [], "max_password_value_length": 0, "max_url_cred_value_length": 0, } self.config = Config(config_dict) # excluded always not_allowed_path_pattern self.paths_not = ["dummy.css", "tmp/dummy.css", "c:\\temp\\dummy.css"] # pattern self.paths_reg = ["tmp/Magic/dummy.Number", "/tmp/log/MagicNumber.txt"] # "/.git/" self.paths_git = ["C:\\.git\\dummy", "./.git/dummy.sample", "~/.git\\dummy.txt"] # not excluded self.paths_src = ["dummy.py", "/tmp/dummy.py", "tmp/dummy.py", "C:\\dummy.py", "temp\\dummy.py"] # not excluded when --depth are set self.paths_pak = ["dummy.gz", "/tmp/dummy.gz", "tmp/dummy.gz", "C:\\dummy.gz", "temp\\dummy.gz"] # not excluded when --doc or --depth are set self.paths_doc = ["dummy.pdf", "/tmp/dummy.pdf", "tmp/dummy.pdf", "C:\\dummy.pdf", "temp\\dummy.pdf"] # extension to be excluded always self.paths_ext = ["dummy.so", "dummy.so", "/tmp/dummy.so", "tmp/dummy.so", "C:\\dummy.so", "temp\\dummy.so"] def tearDown(self): del self.config def test_apply_gitignore_p(self) -> None: """Evaluate that code files would be included after filtering with .gitignore""" files = ["file.py", "src/file.py", "src/dir/file.py"] filtered_files = FilePathExtractor.apply_gitignore(files) self.assertSetEqual(set(files), set(filtered_files)) def test_apply_gitignore_n(self) -> None: """Evaluate that .gitignore correctly filters out files from project""" with tempfile.TemporaryDirectory() as tmp_dir: git.Repo.init(tmp_dir) with open(os.path.join(tmp_dir, ".gitignore"), "w") as f: f.write(".*\n*.txt\n*.log\n*.so") files = [ os.path.join(tmp_dir, ".idea"), os.path.join(tmp_dir, ".idea", "file1.txt"), os.path.join(tmp_dir, ".idea", "dir", "file1.txt"), os.path.join(tmp_dir, ".cache"), os.path.join(tmp_dir, "system.log"), os.path.join(tmp_dir, "src", "dir", "file.so"), os.path.join(tmp_dir, "src", "dir", "file.cpp") ] filtered_files = FilePathExtractor.apply_gitignore(files) self.assertEqual(1, len(filtered_files)) expected_path = os.path.join(tmp_dir, "src", "dir", "file.cpp") self.assertEqual(expected_path, filtered_files[0]) def assert_true_check_exclude_file(self, paths: List[str]): for i in paths: self.assertTrue(FilePathExtractor.check_exclude_file(self.config, i), i) def assert_false_check_exclude_file(self, paths: List[str]): for i in paths: self.assertFalse(FilePathExtractor.check_exclude_file(self.config, i), i) def test_check_exclude_file_p(self) -> None: # matched only not_allowed_path_pattern self.config.exclude_containers = [".gz"] self.config.exclude_documents = [".pdf"] self.config.exclude_extensions = [".so"] self.config.exclude_paths = ["/.git/"] self.config.exclude_patterns = [re.compile(r".*magic.*number.*")] self.config.depth = 1 self.config.doc = False self.assert_true_check_exclude_file(self.paths_not) self.assert_true_check_exclude_file(self.paths_reg) self.assert_true_check_exclude_file(self.paths_git) self.assert_false_check_exclude_file(self.paths_src) self.assert_false_check_exclude_file(self.paths_pak) self.assert_false_check_exclude_file(self.paths_doc) self.assert_true_check_exclude_file(self.paths_ext) # pdf should be not filtered self.config.depth = 0 self.config.doc = True self.assert_true_check_exclude_file(self.paths_not) self.assert_true_check_exclude_file(self.paths_reg) self.assert_true_check_exclude_file(self.paths_git) self.assert_false_check_exclude_file(self.paths_src) self.assert_true_check_exclude_file(self.paths_pak) self.assert_false_check_exclude_file(self.paths_doc) self.assert_true_check_exclude_file(self.paths_ext) def test_check_exclude_file_n(self) -> None: # none of extension are in config, only not_allowed_path_pattern matches self.assert_true_check_exclude_file(self.paths_not) self.assert_false_check_exclude_file(self.paths_reg) self.assert_false_check_exclude_file(self.paths_git) self.assert_false_check_exclude_file(self.paths_src) self.assert_false_check_exclude_file(self.paths_pak) self.assert_false_check_exclude_file(self.paths_doc) self.assert_false_check_exclude_file(self.paths_ext) # matched only exclude_extensions self.config.exclude_containers = [".gz"] self.config.exclude_documents = [".pdf"] self.config.exclude_extensions = [".so"] self.assert_true_check_exclude_file(self.paths_not) self.assert_false_check_exclude_file(self.paths_reg) self.assert_false_check_exclude_file(self.paths_git) self.assert_false_check_exclude_file(self.paths_src) self.assert_true_check_exclude_file(self.paths_pak) self.assert_true_check_exclude_file(self.paths_doc) self.assert_true_check_exclude_file(self.paths_ext) def test_find_by_ext_file_p(self) -> None: self.config.find_by_ext = True self.config.find_by_ext_list = [".p12", ".jpg"] self.assertTrue(FilePathExtractor.is_find_by_ext_file(self.config, ".p12")) self.assertTrue(FilePathExtractor.is_find_by_ext_file(self.config, ".jpg")) self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, ".bmp")) def test_find_by_ext_file_n(self) -> None: self.config.find_by_ext = False self.config.find_by_ext_list = [".p12", ".bmp"] self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, ".p12")) self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, ".bmp")) self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, ".jpg")) @mock.patch("os.path.getsize") def test_check_file_size_p(self, mock_getsize) -> None: mock_getsize.return_value = parse_size("11MiB") self.config.size_limit = parse_size("10MiB") self.assertTrue(FilePathExtractor.check_file_size(self.config, "")) @mock.patch("os.path.getsize") def test_check_file_size_n(self, mock_getsize) -> None: mock_getsize.return_value = parse_size("11MiB") self.config.size_limit = None self.assertFalse(FilePathExtractor.check_file_size(self.config, "")) self.config.size_limit = parse_size("11MiB") self.assertFalse(FilePathExtractor.check_file_size(self.config, "")) def test_skip_symlink_n(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: sub_dir = os.path.join(tmp_dir, "sub_dir") os.mkdir(sub_dir) target_path = os.path.join(sub_dir, "target") with open(target_path, "w") as f: f.write(AZ_STRING) s_link_path = os.path.join(tmp_dir, "s_link") os.symlink(target_path, s_link_path) s_dir_path = os.path.join(tmp_dir, "s_dir_link") os.symlink(sub_dir, s_dir_path) dirs_walked = set() files_walked = set() for root, dirs, files in os.walk(tmp_dir): files_walked.update(files) dirs_walked.update(dirs) self.assertEqual({"sub_dir", "s_dir_link"}, dirs_walked) self.assertEqual({"target", "s_link"}, files_walked) paths = FilePathExtractor.get_file_paths(self.config, tmp_dir) self.assertEqual(1, len(paths)) self.assertEqual(target_path, paths[0]) ================================================ FILE: tests/file_handler/test_files_provider.py ================================================ import io import os import tempfile import unittest from pathlib import Path from unittest.mock import MagicMock, patch from credsweeper.common.constants import UTF_8, UTF_16_LE from credsweeper.file_handler.files_provider import FilesProvider from tests import AZ_DATA, AZ_STRING class TestFilesProvider(unittest.TestCase): def test_get_scannable_files_io_p(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: sample_path = os.path.join(tmp_dir, "sample") with open(sample_path, "wb") as f: az_data_utf16 = AZ_STRING.encode(UTF_16_LE) self.assertNotEqual(az_data_utf16, AZ_DATA) f.write(az_data_utf16) io_data = io.BytesIO(AZ_DATA) config = MagicMock() config.not_allowed_path_pattern.match.return_value = False config.exclude_patterns.return_value = [] config.exclude_paths.return_value = [] config.exclude_extensions.return_value = [] config.depth.return_value = True file_providers_str = FilesProvider([str(sample_path)]) file_text_providers_str = file_providers_str.get_scannable_files(config) self.assertEqual(1, len(file_text_providers_str)) file_text_targets_str = [x for x in file_text_providers_str[0].yield_analysis_target(0)] self.assertEqual(1, len(file_text_targets_str)) self.assertEqual(AZ_STRING, file_text_targets_str[0].line) file_providers_pathlib = FilesProvider([Path(sample_path)]) file_text_providers_pathlib = file_providers_pathlib.get_scannable_files(config) self.assertEqual(1, len(file_text_providers_pathlib)) file_text_targets_pathlib = [x for x in file_text_providers_pathlib[0].yield_analysis_target(0)] self.assertEqual(1, len(file_text_targets_pathlib)) self.assertEqual(AZ_STRING, file_text_targets_pathlib[0].line) with patch("builtins.open") as open_mock_str: text_provider_str_io = FilesProvider([(str(sample_path), io_data)]) io_text_providers_str_io = text_provider_str_io.get_scannable_files(config) self.assertEqual(1, len(io_text_providers_str_io)) io_text_targets_str_io = [x for x in io_text_providers_str_io[0].yield_analysis_target(0)] self.assertEqual(1, len(io_text_targets_str_io)) self.assertEqual(AZ_STRING, io_text_targets_str_io[0].line) open_mock_str.assert_not_called() # return the cursor to begin io_data.seek(0, io.SEEK_SET) with patch("builtins.open") as open_mock_io: text_provider_pathlib_io = FilesProvider([(Path(sample_path), io_data)]) io_text_providers_pathlib_io = text_provider_pathlib_io.get_scannable_files(config) self.assertEqual(1, len(io_text_providers_pathlib_io)) io_text_targets_pathlib_io = [x for x in io_text_providers_pathlib_io[0].yield_analysis_target(0)] self.assertEqual(1, len(io_text_targets_pathlib_io)) self.assertEqual(AZ_STRING, io_text_targets_pathlib_io[0].line) open_mock_io.assert_not_called() # return the cursor again io_data.seek(0, io.SEEK_SET) with patch("builtins.open") as open_mock_io: text_provider_io = FilesProvider([io_data]) io_text_providers_io = text_provider_io.get_scannable_files(config) self.assertEqual(1, len(io_text_providers_io)) io_text_targets_io = [x for x in io_text_providers_io[0].yield_analysis_target(0)] self.assertEqual(1, len(io_text_targets_io)) self.assertEqual(AZ_STRING, io_text_targets_io[0].line) open_mock_io.assert_not_called() def test_get_scannable_files_io_n(self) -> None: io_data = io.BytesIO(AZ_DATA) config = MagicMock() provider = FilesProvider([io_data]) self.assertEqual(1, len(provider.get_scannable_files(config))) config.assert_not_called() ================================================ FILE: tests/file_handler/test_patches_provider.py ================================================ import io import os import tempfile from unittest.mock import patch from credsweeper.common.constants import DiffRowType, UTF_8 from credsweeper.config.config import Config from credsweeper.file_handler.patches_provider import PatchesProvider from credsweeper.utils.util import Util from tests import SAMPLES_PATH class TestPatchesProvider: def test_load_patch_data_p(self, config: Config) -> None: """Evaluate base load diff file""" patch_file = SAMPLES_PATH / "password.patch" patch_provider = PatchesProvider([patch_file], DiffRowType.ADDED) raw_patches = patch_provider.load_patch_data(config) expected = [[ 'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json', # 'new file mode 100644', # 'index 00000000..7ebf3947', # '--- /dev/null', # '+++ b/.changes/1.16.98.json', # '@@ -0,0 +1,4 @@', # '+{', # '+ "category": "``cloudformation``",', # '+ "password": "dkajco1"', # '+}', # '', # '' # ]] assert raw_patches == expected def test_load_patch_data_io_p(self, config: Config) -> None: """Evaluate base load diff file with io.BytesIO""" patch_file = SAMPLES_PATH / "password.patch" data = Util.read_data(str(patch_file)) io_data = io.BytesIO(data) patch_provider = PatchesProvider([io_data], DiffRowType.ADDED) raw_patches = patch_provider.load_patch_data(config) expected = [[ 'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json', # 'new file mode 100644', # 'index 00000000..7ebf3947', # '--- /dev/null', # '+++ b/.changes/1.16.98.json', # '@@ -0,0 +1,4 @@', # '+{', # '+ "category": "``cloudformation``",', # '+ "password": "dkajco1"', # '+}', # '', # '' # ]] assert raw_patches == expected def test_load_patch_data_utf16_p(self, config: Config) -> None: """Evaluate load diff file with UTF-16 encoding""" patch_file = SAMPLES_PATH / "password_utf16.patch" patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED) raw_patches = patch_provider.load_patch_data(config) expected = [[ 'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json', # 'new file mode 100644', # 'index 00000000..7ebf3947', # '--- /dev/null', # '+++ b/.changes/1.16.98.json', # '@@ -0,0 +1,4 @@', # '+{', # '+ "info": "난 차를 마십니다"', # '+ "category": "``cloudformation``",', # '+ "password": "dkajco1"', # '+}', # '', # '' # ]] assert raw_patches == expected def test_load_patch_data_western_n(self, config: Config) -> None: """Evaluate load diff file with Western encoding""" patch_file = SAMPLES_PATH / "password_western.patch" patch_provider = PatchesProvider([patch_file], DiffRowType.ADDED) with patch('logging.Logger.debug') as mocked_logger: raw_patches = patch_provider.load_patch_data(config) mocked_logger.assert_called_with("UnicodeError: Can't decode content as %s.", UTF_8) expected = [[ 'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json', # 'new file mode 100644', # 'index 00000000..7ebf3947', # '--- /dev/null', # '+++ b/.changes/1.16.98.json', # '@@ -0,0 +1,4 @@', # '+{', # '+ "category": "``cloudformation``",', # '+ "password": "dkajcö1"', # '+}', # '', # '' # ]] assert raw_patches == expected def test_load_patch_data_n(self, config: Config) -> None: """Evaluate warning occurrence while load diff file with ISO-IR-111 encoding""" patch_file = SAMPLES_PATH / "iso_ir_111.patch" patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED) with patch('logging.Logger.debug') as mocked_logger: raw_patches = patch_provider.load_patch_data(config) mocked_logger.assert_called_with("UnicodeError: Can't decode content as %s.", UTF_8) expected = [[ 'ëÉÒÉÌÌÉÃÁ', # 'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json', # 'new file mode 100644', # 'index 00000000..7ebf3947', # '--- /dev/null', # '+++ b/.changes/1.16.98.json', # '@@ -0,0 +1,4 @@', # '+{', # '+ "category": "``cloudformation``",', # '+ "password": "dkajco1"', # '+}', # '', # '' # ]] assert raw_patches == expected def test_oversize_n(self, config: Config) -> None: """Evaluate warning occurrence while load oversize diff file""" # use UTF-16 encoding to prevent any Windows style transformation patch_file = SAMPLES_PATH / "password_utf16.patch" patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED) config.size_limit = 0 with patch('logging.Logger.warning') as mocked_logger: raw_patches = patch_provider.load_patch_data(config) mocked_logger.assert_called_with("Size (%s) of the file '%s' is over limit (%s)", 512, str(patch_file), 0) assert isinstance(raw_patches, list) assert len(raw_patches) == 0 def test_memory_error_n(self, config: Config) -> None: with tempfile.TemporaryDirectory() as tmp_dir: patch_file = os.path.join(tmp_dir, "test.patch") assert not os.path.exists(patch_file) with open(patch_file, "w") as f: f.write("""diff --git a/creds.py @@ -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000002985304056119834851 +1,4 @@ +{ + "wrong diff", + "sword": "FISH" + t............................................. li.k re...o0i:api........///:..N&.@........00000000..7ebf3947 --- /dev/null +++ b/.changes.........json @@ -0,0 +1,4 @@ +{ + correct + lines """) patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED) with patch('logging.Logger.error') as mocked_logger: test_files = patch_provider.get_scannable_files(config) assert len(test_files) == 1 targets = [x for x in test_files[0].yield_analysis_target(0)] assert len(targets) == 7 mocked_logger.assert_not_called() def test_overflow_error_n(self, config: Config) -> None: with tempfile.TemporaryDirectory() as tmp_dir: patch_file = os.path.join(tmp_dir, "test.patch") assert not os.path.exists(patch_file) with open(patch_file, "w") as f: f.write("""OverflowError diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json new file mode 100644 index 00000000..7ebf3947 --- /dev/null +++ b/.changes/1.16.98.json @@ -0,0 +12345678901234567890,12345678901234567894 @@ +{ + "category": "``cloudformation``", + "password": "dkajco1" +} """) patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED) with patch('logging.Logger.error') as mocked_logger: test_files = patch_provider.get_scannable_files(config) assert len(test_files) == 1 targets = [x for x in test_files[0].yield_analysis_target(0)] assert len(targets) == 4 mocked_logger.assert_not_called() ================================================ FILE: tests/file_handler/test_string_content_provider.py ================================================ import unittest from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.string_content_provider import StringContentProvider from tests import AZ_STRING from tests.filters.conftest import DUMMY_DESCRIPTOR class TestStringContentProvider(unittest.TestCase): def test_get_analysis_target_p(self) -> None: """Evaluate that lines data correctly extracted from file""" lines = ["line one", "password='in_line_2'"] content_provider = StringContentProvider(lines) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] self.assertEqual(len(lines), len(analysis_targets)) expected_target = AnalysisTarget(0, lines, [1, 2], DUMMY_DESCRIPTOR) self.assertEqual(expected_target.line, analysis_targets[0].line) # check second target and line numeration expected_target = AnalysisTarget(1, lines, [1, 2], DUMMY_DESCRIPTOR) self.assertEqual(expected_target.line, analysis_targets[1].line) # specific line numeration content_provider = StringContentProvider(lines, [42, -1]) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] self.assertEqual(42, analysis_targets[0].line_num) self.assertEqual(-1, analysis_targets[1].line_num) def test_get_analysis_target_n(self) -> None: """Negative cases check""" # empty list content_provider = StringContentProvider([]) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] self.assertEqual(0, len(analysis_targets)) # mismatched amount of lists content_provider = StringContentProvider(["a", "b", "c"], [2, 3]) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] self.assertEqual(3, len(analysis_targets)) self.assertEqual(1, analysis_targets[0].line_num) self.assertEqual(2, analysis_targets[1].line_num) self.assertEqual(3, analysis_targets[2].line_num) content_provider = StringContentProvider(["a", "b", "c"], [5, 3, 4, 5]) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] self.assertEqual(3, len(analysis_targets)) self.assertEqual(1, analysis_targets[0].line_num) self.assertEqual(2, analysis_targets[1].line_num) self.assertEqual(3, analysis_targets[2].line_num) def test_free_n(self) -> None: provider = StringContentProvider([AZ_STRING]) provider.free() self.assertListEqual([], provider.lines) provider.free() provider.free() def test_data_n(self) -> None: with self.assertRaises(NotImplementedError): _ = StringContentProvider([AZ_STRING]).data ================================================ FILE: tests/file_handler/test_struct_content_provider.py ================================================ import unittest from credsweeper.file_handler.struct_content_provider import StructContentProvider class TestStructContentProvider(unittest.TestCase): def test_free_n(self) -> None: provider = StructContentProvider({}) provider.free() self.assertIsNone(provider.struct) provider.free() provider.free() def test_data_n(self) -> None: with self.assertRaises(NotImplementedError): _ = StructContentProvider({}).data ================================================ FILE: tests/file_handler/test_text_content_provider.py ================================================ import os import tempfile import unittest from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.descriptor import Descriptor from credsweeper.file_handler.text_content_provider import TextContentProvider from tests import SAMPLES_PATH class TestTextContentProvider(unittest.TestCase): def test_get_analysis_target_p(self) -> None: """Evaluate that lines data correctly extracted from file""" target_path = SAMPLES_PATH / "password.gradle" content_provider = TextContentProvider(target_path) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] all_lines = ['password = "cackle!"', ''] expected_target = AnalysisTarget(0, all_lines, [x for x in range(len(all_lines))], Descriptor(str(target_path), target_path.suffix, "")) self.assertEqual(6, len(analysis_targets)) target = analysis_targets[0] self.assertEqual(expected_target.line, target.line) target_path = SAMPLES_PATH / "xml_password.xml" content_provider = TextContentProvider(target_path) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] all_lines = [ "Countries : ", "Country : ", "City : Seoul", "password : cackle!", "Country : ", "City : Kyiv", "password : peace_for_ukraine", "password : Password for authorization\n BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", ] expected_target = AnalysisTarget(3, all_lines, [x for x in range(len(all_lines))], Descriptor(str(target_path), ".xml", "")) self.assertEqual(8, len(analysis_targets)) target = analysis_targets[3] self.assertEqual(expected_target.line, target.line) def test_get_analysis_target_n(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: target_path = os.path.join(tmp_dir, "test_get_analysis_target_n.xml") with open(target_path, "w") as f: f.write("crackle!") content_provider = TextContentProvider(target_path) analysis_targets = [x for x in content_provider.yield_analysis_target(0)] all_lines = ["crackle!"] expected_target = AnalysisTarget(0, all_lines, [x for x in range(len(all_lines))], Descriptor(target_path, ".xml", "")) self.assertEqual(1, len(analysis_targets)) target = analysis_targets[0] self.assertEqual(expected_target.line, target.line) def test_free_n(self) -> None: provider = TextContentProvider("dummy") provider.free() self.assertListEqual([], provider.lines) provider.free() provider.free() ================================================ FILE: tests/file_handler/zip_bomb_1.py ================================================ zb1 = b'PK\x03\x04\x14\x00\x02\x00\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'3.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'1.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'2.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'0.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'4.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'5.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'6.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'7.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'8.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'9.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'a.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'b.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'c.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'd.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'e.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x03\x04\x14\x00\x02\x00' \ b'\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00lib ' \ b'f.zip\xed\xddWPS\xdb\x1a\x07\xf0H\x118t\x95C\x00\xb1Q"H\x95\x1a\xc4\xa0\xdc#\xbd\tH\x95b(' \ b'Q\x8a\xe8\r-\x14+G\xe9\x10\x01)F\x94\x8e(QDz\xb3%\xa0 \x08\xa2 ' \ b'RT\x04\xa4\xb7C\t\x88\x1c\xbd\x8e\xf7\xc6\x87373y\xfd\xf6~X{\xcd\xda\xff\xf9^\x7f\xb3\xf7*\x16\xc6\xacl[\x10,' \ b'\x08ND\xdb\x9d\xb0\xddT\xd7\xf1\r\x92\x9c\x08\xc4F<\x02\xf1\x1b\x02\x81\xc0\xfa\xf9y\xefPQ\x089qj\xb2\xcf[' \ b'\xd3zu\x1b\xc7\x8c\x14%j+\x97\x90D\xaa\xb4\x04:9\xd4=\xb7\xe3O\xc1@\xa4\xe0\xae\n\x11\x93)\xa1\xac\xba\xed' \ b'\x96\x81\xe4Fy\xd3\x08I\xc7M\xff\xe6\xefK.q\xa2J%y?\xae\xf4I\x15\xac\xba4Jj%\x9cnun\xc3g\xe2\x9co\xd0\x8a\x17' \ b'\xb0\xfb\x1bF\xd6\xd7\xc9\x0bs\xa5\x99\x01\xb4\xb5\x17\\\xb5\xd7(' \ b'\x89\xa6M.\x89\xdd\x17\x12\xd7\x90Oz:\xf40l\x86\\\x87\x04v\xb2\x1d$\x19\x9aa6\x90\xcf\xdc\x17\x95}\xe4' \ b'~#}\x83y\\\xee\x8e[\xb6\xf8\xfd\x81\x8a&\xf9")&\xd9\xbe\xc2\xad\x96Ra\x05\xb8\x0bu\x1f\xf79Jd\xe7\x16\x1a' \ b'\x04Kxh\x1cNO[{0t\xcb\x8b\x1cU\xdb\x94w[' \ b'\x10]\xbfh\xa4\x97#\xd3hgZ\x93\x13T\xa0E\xc8\xbb\\\x14\xaah\x8a\x9a\xaa\xc6,' \ b'\xb6\x86N\xd4\xd7\\\xec\xb7\xd5\xde\xef\x9bB\x9e?\xa0\x7f\xfd\xebB\r\xcf\x99\xedd\xb3\xecXsL~.\xcd,' \ b'(\x95\xb5\x9c\xd3;\xd9c[\xb8\xad\xca]\x9f\x86\xee\xe9\x0f:KG\x1c\xadX\x91\xfcZ8r\xc5\xca&\xf3\x10\x13\x87[' \ b'\xb1\xca!\xb6\x1e\n\x16\x9e\x1a{\xde\x18kW=5\xb86\xe9\xaa\xf4q\x96O\x8c\xf5\xd3\xb5\x82\xd4\xc0\xd4\x1a\x0b' \ b'\xaf\x89/\x89\xc2\xd5AM\x9b\xfb\x1f\xf9\n\x0ft\x14\xb0\xb4\xf1\xbd,kF\x9a\x97\xe1t\xecr7R\x85\r\x0b)\xe1{' \ b'\xf9\x9a\xbd\xaeo\x9eS\xb0\xf5\xe8q\xf4\x1fw\x19B\xc5~\xde\xb2\xc2\x96L\xb2\xa9)\xb87&\x17\xe8\x85\xcd\xc29' \ b'\xa0\x8aK\xd1\xaer\xfb\xd1\xca\xc1\xb4\xfb.\x1f\xfb\x89\xe7\xc3\x83\xf6\x98\xa9(x\x1d\xcf\xbf4,' \ b'\x9d\xa1\x10\xb9\xb5\\m\xe7\xf5\xe6\xfa0k\xa2\x83\x92\xda\xe2W\xe7\xd1Uwc\xab?W\xa4\xbdK\xe4m&3\xd8YJ\x9c' \ b'\x1dep\xb9\x17\xf66\xbd\xb3_\x9b\x1d\xa7MQndO\xf0\xd5m\xb1\xeaq\xd1\xdf\xdd\x90v\xa8j\xa6J\xd1\x8f\xbax7k0~5' \ b'\x1e\x93\x1b~:\xf6\xcb\x97\xfc\xf6+}\x7f\xa5\xa1\xd0\xa3\xd8M}<.\xc7%\x17\x8c:\x94dvk\xce\x18{' \ b'K5\x9c\xe8+Ogu\x8bM\t\x89k\xa0\xf9\xbdO\xc1\x8b\xa9\xdfi\xe3\x92\xa3V-\x9a\xd5K\xf4\x1d\r\x93\x1c\xb6\xd5' \ b'\xd0Q\xc58\xd3\xdc\x8b\x0cxP\xaac\x96\x96\xc7G\xdb\xed\xfc\xafS\xad\x89\x8f\x15_wFy\x06\xf7\xfaZ&-4_\x97(' \ b'\x0f\xc9\xd3\xba\xc5\xafo\xc8\x83\x9b4\xbe\x8aS\xac\xcfx\xc9\xb3b\xfe\xf6\xed\xc5Y\x94\xee\x96\xa9\xc2\x85' \ b'\xbb\xc5H?\xaa\xc9\xd5\x97\xb63|j\xe2\xa9\xb8\xd2\x8b\\\x998[' \ b'q}v\xb2d\x89\x9dsh\xad>\xafl/vk\xf3\n\xeb\xcc\xa3]\x8a\xf8\xb0 ' \ b'\x92A\xeat\x81>\x17\'o\x8c\xb5r\x03\xe9\xd9R\x9fP@\xc4\x159{' \ b'!\xd4H$\xfe\x84\x0bw\x85\x98=9\xdb\xa4\xedYoh\x95\x05\xb2\xfc\xd3\xe3\xa6$\x8ac\xd0\xbd\x1e\xf9>\x99n\xeaE' \ b'\x8e\x14\xa3\x93\xbe\x15xr>A\xe4\xb6\x1a\xba\xb7\xbf\xa7\xcbm\x80\xb6c*a\x7f\xfb;\x1bgTD\x0c\xf6\xd9\x97\x96' \ b'*n\xe2|w\xdd\xb57\xbb\x1aB%\xdd\x9dc\xf0\xaa\x1ej\xc9\xcb\xfb\xf6\x99W\xc6\x91D\xd7\x9e}\xaa\xe0\xb7W\xd7' \ b'\x8f{\x15_6\xf4<\xa5\xab\xdb\xaf]\xcbr\xc7\x88\x03\xa9\xe7\xa6\xa5\xcd\x81\xc6\xda\'\x0f\x8c\x1dKO]\xcax\xbc3' \ b'\xbao\xb2\xd2\xbc\xf3\x18v\xfd\xbd\x93\xd8\xad\x161\xde\xfcp\xc15qB\xe6\xe9,U\x93,' \ b'\xe5\xbccE\x85\x01\x89\xcf\n\xdd\xba\xcf\x1a:\xfaXS\xe5s?\xd3\\9\xd9\xbb\xe2\xef\xea\xe8\xe4e\\J\xc1s\xc7' \ b'/\x97\x9dL\xcdG\x13\xdaQ6\xad:#\x94n\xaf%j\x01u\xeb\x99\xd5\x9d\xaf\xf6>/}X\xc1Ril\xd31D$\x94\xccEa\x1a\x91u' \ b'\xe3G\x84r\xc3\xea*i(\x8ai\xe7\x91Wnyc\xd5\xb2\xbe\xda\xc8\x1b\xf5\xb8zI\x87\xd7\xd1Y\xf6w\x88\x92\xe9.\x15' \ b'\x16\xea\x9egx\twz3N\x1b\x0c\x1c\xf1]v\xf3P\rh\t\xacZ%y\xc9\x1dT\x92Y\xf3\x14\xd6\xd3\x14\xdd\xe7\xfa\xf9\xbd' \ b'\x0b\xb5Z\xcev\xbd\x10]\x91\x94"\x97i\xb7\xa7/\xbd\xbf\xbdF\x13\x15\x97g\xdey\x99b$\x1b\xd7\x1d\xde\xac\x86e' \ b'\xdb8k\x94\xbc\xe9y\xa8\xb2\xd3\x8d\xf4\x81`\xab\x9cg]e\xe5\x1e\x18w6\xbeOu2!\x1d\xfeG\x87\xf9)\xb7\xf5\x9d5' \ b'\x17\xa6\xd4\xf7\xd4\x16\x15,S\xf6I?Q\x9f&\xe6\x8d\xeb\x8e\x84\xc4\x07\x126\xd7\xf4\x96V\xe8\xfbt\r\x8a\xaf' \ b'\xfd\xab\xc4\x99\xbff(3"\xd8R\xe7\xf7\x86m\xf5N\xe2A\xa6\x04\xd3{\xba\xd9]\xe5\x97\x16\'\x8b\xd7\x13{' \ b'\xc2\x82\xdf\xe3T\xc4\x92n^\x96\xcf\xde\xde\x84*:a\xd4\xbc\xdd@\xd4\x05e\xc5\xb6\x16Y\xa5,' \ b'"\xf1\xe0\xe0\xd9\xe81\x89G\x88\xdai\xab\x0b\x91Xn\xd3\xe0\x91\xe5\r\xf7}\x9c\xec\\\x1d\xec{' \ b'u\xadc\xde\x07\\9\xf5\x987e\xa0l\x1a\x95\x11\xd2\xed_\x97QRb\x9e\x8e\x7f ' \ b'\xca\xe5\x84\x1bI}p\xc8\xdf*\xeaMg\xe3G\xae7\x1an-$\x8e\x856\xfe\xa3\xc6u\r%\xbb\xae\xd8{' \ b'\xa8\xf4\r\xe5\x99\x897\xbe\xa6\xd6\xcaq5iD\xbf1\xccS\xbb\x11\xee\xd6{' \ b'\xed\xe6\xa9\xa9\x9b\x8es\x96\xb16)\xe4\xec\xf2\xb0\xee\xa8\x9a\xf8\x85\xbcC,' \ b'SD\x9b\xc5\x8f\xd65\x033\xec\x81,e\xdcI\x92\xed\xaf)e\x0e\xc5\x91\x02o^d\x94^:<\xa9\x99\xb0\x8c\xeb\x88}>\xc1' \ b'\x1e#pP*\xfa\xdd\x87\x1c\xaa\x18\xd1MH\xf0\xf0\x8bYv\xf1\xe2\xc9\xca\xa7\r\x05\xde\xde\x9c1\xadmzz\xfcZ\xd6' \ b'\x82\xb9%2\xbc<"b\xcd>\xc2^dL\xa8\x9fF(\xbf\x8d\xc4\xd7YZ\x8c\xde\xf8\xb1\xe2\xec\xbd\x8dRjr[' \ b'\xd9\x076\xbb\xbd\xfd\xcd\xd7\x9b\x93\x8b\xf8%]1i\xa4\xf1\x18\n\x83O\xaf\xe0m?\x10\xc1\xf35\xc0\x82O=\xad' \ b'\'\xa2\x88`\xa1\xe6\x85\xd9H\xc3O\xb6\xcc\x8f\xccsg\x8d!;\x178,' \ b'\x06=\x0b\xe7\x13n\x0e\x0f\x1e^\xe8=\xeb\xc9-\xd2K<\x89_\x9f>\xbd\xb8\xe4\xd2\xad ' \ b'\x7fr\xbbs\xf4\xc9\x972F\r\xd1O\'N%\x12y\xaau\x95\xa4\x03DTB1E\xe2K\x92\xcd\xed\xb44\xc1\xa7B\x17c\xe3H\xac' \ b'\xa2\xa5\x97GLI~e\x84\xa1\xf6\xccqY\xdc\xe8_\xd4\x1a\\\xd8>r\xff\x0e\xe36\xb4\xd8\xe1\xcfg\xb4\xdc\xfe\xaa=W7' \ b'._7B\xf9X\xdd\xbc\xf7\xe0\xf4]\x9f.J4\x9b\xd3(\x1a\x9dU\x91\x92^\xfe\xca\x1f+\xf0dbv\xa9U\xd4$:(' \ b'A\xa9i\x8e\x8c\x91\xf7\xf1\x97\xbe\xe3x2\xee\x85V\xe5S3;dQ\xf5#\xefV"\xa1\xc8u[' \ b'\x1a\xc7\xf0y\xc2\xb7\xa6Qj\xf8\xd6\x7f\x1e~\xf4S\xd3\n\xf8\x86\xff\xdb?\x8a\xed\xdf\xa9\xc4\xdf\xc2:\xffP' \ b'\xfb[3\xb8i^\xf5\x91\xf6\xcf~\x82q\xcb+\x96\x1f\x03\xdf\xfb\n\xca\xe6b?_d\x9d\xaf|Z\xfb\xe4\x97\x1a\xa3\xe7' \ b'\xe8k\x8c\xb0\xfdRC\xea\x97\x1a\xa4_j\xe07\xd0\xd7h\x13\xa2\xaf\xa1\xad\xf1\xbf\xe0\xaa\x8eR\x02.\t9\xd7' \ b'\xf0zuI:&y\xfd\xc2\xcd\xaeW\x83\xda\xd5\x0f/;\\\x8d\x9c\xff\x1c!\xe0\x15\xc0\xd1\x9a\xb3\x86-\x94~K\xd2\x7f' \ b'\xa7T\xe8\x9cC\xd2\x1f_\xcav(?\xbd\xad\xd8\xfa\x8f\x80\xfa\x0f\xda\x0e\xa78_\x1f87\x7f<_}L\xc7\xa45\xc7p\xa5p' \ b'\xc0^3\xa1\x1f\x13\xb5"\x9b6\x7f<\x92klP\xb65\x07\xf3{' \ b'aP\'I\xdf\xc9\xe7p\xc2\n:!3Hw\xbf\xf2\x07m/]\xdd\xbe\xe0\x8c\xcd\xe53k\xc8\xde\xafmu\x91\xc2\x07yj\xcf\xb6' \ b'\xacsX\xfc\x7fK(\x83%\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K0a\x89\xbd`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LXB\t,\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x82\tK\xa8\x82%\xc0\x12`\t\xb0\x04X' \ b'\x02,\x01\x96\x00K0a\t5\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12`\t&,' \ b'\xa1\x0e\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,\xc1\x84%4\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\x98\xb0\x84&X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96@\x83%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K0a\x89c`\t\xb0\x04X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12LX\x02\x0b\x96\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\xc1\x84%\xdc\xc0\x12`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\x98\xb0\x84;X\x02,' \ b'\x01\x96\x00K\x80%\xc0\x12`\t\xb0\x04\x13\x96\xf0\x00K\x80%\xc0\x12`\t\xb0\x04X\x02,' \ b'\x01\x96`\xc2\x12\x9e`\t\xb0\x04X\x02,\x01\x96\x00K\x80%\xc0\x12\xffl\x89\r,' \ b'[\x10\xff\xac\x89\x1f\xd7\x0eD\xf9y\xc4O[' \ b'\xa8|\xb7\x05\xe39\x13N\xfa\xb3\xcb\x19\xcf\xa5\t\xd0\x9fS\xcax\xee\x13\x92\xfeL2\xc6sJ;\xe9\xcf\x1fa<\x17&C' \ b'\xbf\xd78\xe3\xb9&e\xfa}E\x19\xcfm\xd1\xa2\xdfC\x8c\xf1\x9c\xab.\xfd~!\x8c\xe7\xee\x18\xd1\xaf\rf<\xb7lI\xbf' \ b'\x0e\x88\xf1\xdc\x1f\x8e\xf4s~\x19\xcf%\xba\xd1\xcf\xefa<\xd7\xebM\xff/\x8f\xf1\xdcn\x7f\xfa\xefv\x8c\xe7\xfc' \ b'\xc3\xe8\x8dna\xcc\xbe\xf1\xfb\x88\xc0\xb7\xfb\x1c+\x02\xf10\xe2\xfb\xcb\x7f\x03PK\x01\x02\x14\x00\x14\x00' \ b'\x02\x00\x08\x00\x1b\xad|(\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 ' \ b'\x00\xb6\x81\x00\x00\x00\x00lib 3.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81 \n\x00\x00lib ' \ b'1.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81@\x14\x00\x00lib ' \ b'2.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81`\x1e\x00\x00lib ' \ b'0.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81\x80(\x00\x00lib ' \ b'4.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81\xa02\x00\x00lib ' \ b'5.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81\xc0<\x00\x00lib ' \ b'6.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81\xe0F\x00\x00lib ' \ b'7.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81\x00Q\x00\x00lib ' \ b'8.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81 [\x00\x00lib ' \ b'9.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81@e\x00\x00lib ' \ b'a.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81`o\x00\x00lib ' \ b'b.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\xb6\x81\x80y\x00\x00lib ' \ b'c.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 ' \ b'\x00\xb6\x81\xa0\x83\x00\x00lib d.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 ' \ b'\x00\xb6\x81\xc0\x8d\x00\x00lib e.zipPK\x01\x02\x14\x00\x14\x00\x02\x00\x08\x00\x1b\xad|(' \ b'\x93u\xdc\xc8\xf9\t\x00\x00V\x88\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00 ' \ b'\x00\xb6\x81\xe0\x97\x00\x00lib f.zipPK\x05\x06\x00\x00\x00\x00\x10\x00\x10\x00p\x03\x00\x00\x00\xa2\x00\x00' \ b'\x00\x00 ' ================================================ FILE: tests/file_handler/zip_bomb_2.py ================================================ zb2 = b'PK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfbXR\xe8\x95v\x00\x00^dM\x01\x01\x00\x00\x000\x00\x1f\x00\xe0' \ b'\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05z)V>qv\x00\x00?dM\x01\x01\x00\x00\x001\x00\x1f\x00\xe0\xffPK' \ b'\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05X>){Mv\x00\x00 ' \ b'dM\x01\x01\x00\x00\x002\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05x\xda\xd9L)v\x00\x00' \ b'\x01dM\x01\x01\x00\x00\x003\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05>\x890\x03\x05v' \ b'\x00\x00\xe2cM\x01\x01\x00\x00\x004\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x04iN9' \ b'\xe1u\x00\x00\xc3cM\x01\x01\x00\x00\x005\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05(' \ b'\xd1\xfc\xda\xbdu\x00\x00\xa4cM\x01\x01\x00\x00\x006\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x15\x83\x9f[\x99u\x00\x00\x85cM\x01\x01\x00\x00\x007\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05d\xcf\x95Xuu\x00\x00fcM\x01\x01\x00\x00\x008\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05!BA\xe6Qu\x00\x00GcM\x01\x01\x00\x00\x009\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\x90n\xed6-u\x00\x00(cM\x01\x01\x00\x00\x00A\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05#\xf6\xf8\xe2\tu\x00\x00\tcM\x01\x01\x00\x00\x00B\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05\xa6\xc5\xc4\xcf\xe5t\x00\x00\xeabM\x01\x01\x00\x00\x00C\x00\x1f\x00\xe0\xffPK\x03\x04\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xe4\x19QC\xc1t\x00\x00\xcbbM\x01\x01\x00\x00\x00D\x00\x1f\x00\xe0\xffPK\x03' \ b'\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb2\x8b\xb4u\x9dt\x00\x00\xacbM\x01\x01\x00\x00\x00E\x00\x1f\x00\xe0' \ b'\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x88`\xf60yt\x00\x00\x8dbM\x01\x01\x00\x00\x00F\x00\x1f\x00' \ b'\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb7\x15fDUt\x00\x00nbM\x01\x01\x00\x00\x00G\x00\x1f\x00' \ b'\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x90\x03\xcdZ1t\x00\x00ObM\x01\x01\x00\x00\x00H\x00\x1f' \ b'\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcfZ\xa9;\rt\x00\x000bM\x01\x01\x00\x00\x00I\x00\x1f' \ b'\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xean\xe3e\xe9s\x00\x00\x11bM\x01\x01\x00\x00\x00J' \ b'\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xba\x7f,' \ b'\x9c\xc5s\x00\x00\xf2aM\x01\x01\x00\x00\x00K\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05' \ b'\x95\xfa3\x8c\xa1s\x00\x00\xd3aM\x01\x01\x00\x00\x00L\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\xbc.\xb0\xbe}s\x00\x00\xb4aM\x01\x01\x00\x00\x00M\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05i\xd1\\\x88Ys\x00\x00\x95aM\x01\x01\x00\x00\x00N\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\r\x84\xc0\xda5s\x00\x00vaM\x01\x01\x00\x00\x00O\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05\xdc\xaf,' \ b'b\x11s\x00\x00WaM\x01\x01\x00\x00\x00P\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9b' \ b'\xfe\x15\x8d\xedr\x00\x008aM\x01\x01\x00\x00\x00Q\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH' \ b'\x05\'%jF\xc9r\x00\x00\x19aM\x01\x01\x00\x00\x00R\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH' \ b'\x05\xa7\x89\x056\xa5r\x00\x00\xfa`M\x01\x01\x00\x00\x00S\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\xe0`?\xbd\x81r\x00\x00\xdb`M\x01\x01\x00\x00\x00T\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\xba\xa1\xdcB]r\x00\x00\xbc`M\x01\x01\x00\x00\x00U\x00\x1f\x00\xe0\xffPK\x03\x04\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\x88\xb1\xa4\xc39r\x00\x00\x9d`M\x01\x01\x00\x00\x00V\x00\x1f\x00\xe0\xffPK\x03' \ b'\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05jqM\x8c\x15r\x00\x00~`M\x01\x01\x00\x00\x00W\x00\x1f\x00\xe0\xffPK\x03' \ b'\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd1+\xf1\x1d\xf1q\x00\x00_`M\x01\x01\x00\x00\x00X\x00\x1f\x00\xe0' \ b'\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x12\xf8(' \ b'_\xcdq\x00\x00@`M\x01\x01\x00\x00\x00Y\x00\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x99' \ b'\xacY\xe2\xa9q\x00\x00!`M\x01\x01\x00\x00\x00Z\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb3\xd5\xf6\x98\x84q\x00\x00\x01`M\x01\x02\x00\x00' \ b'\x0000\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb0\xff\x13~_q\x00\x00\xe1_M\x01\x02\x00' \ b'\x00\x0001\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x0c\x9fI;:q\x00\x00\xc1_M\x01\x02\x00' \ b'\x00\x0002\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x18/\xbb\xe9\x15q\x00\x00\xa1_M\x01' \ b'\x02\x00\x00\x0003\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x84\xb37\x0c\xf0p\x00\x00' \ b'\x81_M\x01\x02\x00\x00\x0004\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf2\xc6T\xd6\xcbp' \ b'\x00\x00a_M\x01\x02\x00\x00\x0005\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05urkX\xa6p\x00' \ b'\x00A_M\x01\x02\x00\x00\x0006\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05F\x9b%f\x81p\x00' \ b'\x00!_M\x01\x02\x00\x00\x0007\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x0cb\x0eh\\p\x00' \ b'\x00\x01_M\x01\x02\x00\x00\x0008\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9a\xe8 ' \ b'\x8f7p\x00\x00\xe1^M\x01\x02\x00\x00\x0009\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8b\x86G\x1d\x12p\x00\x00\xc1^M\x01\x02\x00\x00' \ b'\x000A\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe3/\x83\xa3\xedo\x00\x00\xa1^M\x01\x02' \ b'\x00\x00\x000B\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05Bh ' \ b'H\xc8o\x00\x00\x81^M\x01\x02\x00\x00\x000C\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb7a\x99\xd7\xa3o\x00\x00a^M\x01\x02\x00\x00\x000D' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05+wRl~o\x00\x00A^M\x01\x02\x00\x00\x000E\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbc\xb0C\xb7Yo\x00\x00!^M\x01\x02\x00\x00\x000F\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc3`\xfb%4o\x00\x00\x01^M\x01\x02\x00\x00\x000G\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x02\xf8X\xa3\x0fo\x00\x00\xe1]M\x01\x02\x00\x00' \ b'\x000H\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x12Y7\x0f\xean\x00\x00\xc1]M\x01\x02\x00' \ b'\x00\x000I\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05NP\x15\xaf\xc5n\x00\x00\xa1]M\x01\x02' \ b'\x00\x00\x000J\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05A\x0bB\xb9\xa0n\x00\x00\x81]M\x01' \ b'\x02\x00\x00\x000K\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x19f\xc8x{' \ b'n\x00\x00a]M\x01\x02\x00\x00\x000L\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xa7\xb0\xfeWVn\x00\x00A]M\x01\x02\x00\x00\x000M\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xed\xd0\r\xb11n\x00\x00!]M\x01\x02\x00\x00\x000N' \ b'\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x14\xeb\xba\xf1\x0cn\x00\x00\x01]M\x01\x02\x00\x00' \ b'\x000O\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9e\x85K\xce\xe7m\x00\x00\xe1\\M\x01\x02' \ b'\x00\x00\x000P\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xdf\xe7vB\xc2m\x00\x00\xc1\\M\x01' \ b'\x02\x00\x00\x000Q\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc1\x92\x03\xc7\x9dm\x00\x00' \ b'\xa1\\M\x01\x02\x00\x00\x000R\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05%\xd6\xe2\xa8xm\x00' \ b'\x00\x81\\M\x01\x02\x00\x00\x000S\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfd\x99{' \ b'iSm\x00\x00a\\M\x01\x02\x00\x00\x000T\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x02\x05\xcf5.m\x00\x00A\\M\x01\x02\x00\x00\x000U' \ b'\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x16u\x88!\tm\x00\x00!\\M\x01\x02\x00\x00\x000V\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc0\x83S\xdc\xe4l\x00\x00\x01\\M\x01\x02\x00\x00' \ b'\x000W\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x97\x98=x\xbfl\x00\x00\xe1[' \ b'M\x01\x02\x00\x00\x000X\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x13L\xe7\xa9\x9al\x00' \ b'\x00\xc1[M\x01\x02\x00\x00\x000Y\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05T9\x8e\xd6ul\x00' \ b'\x00\xa1[M\x01\x02\x00\x00\x000Z\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x16\xb7\xa8XPl' \ b'\x00\x00\x81[M\x01\x02\x00\x00\x0010\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd4A5!+l\x00\x00a[M\x01\x02\x00\x00\x0011\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1a\xa7\x1a\x81\x06l\x00\x00A[' \ b'M\x01\x02\x00\x00\x0012\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05~\xff:&\xe1k\x00\x00![' \ b'M\x01\x02\x00\x00\x0013\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x052/\x96Y\xbck\x00\x00\x01[' \ b'M\x01\x02\x00\x00\x0014\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xda\x1df\x80\x97k\x00' \ b'\x00\xe1ZM\x01\x02\x00\x00\x0015\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05t\xa6\xb5\xb3rk' \ b'\x00\x00\xc1ZM\x01\x02\x00\x00\x0016\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe5\xce\xd6\rMk\x00\x00\xa1ZM\x01\x02\x00\x00\x0017' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05f\x8b\xf0\xd5(' \ b'k\x00\x00\x81ZM\x01\x02\x00\x00\x0018\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb\xe2\xf1x\x03k\x00\x00aZM\x01\x02\x00\x00\x0019' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05~\xe2|\x13\xdej\x00\x00AZM\x01\x02\x00\x00\x001A' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05?!\x19,' \ b'\xb9j\x00\x00!ZM\x01\x02\x00\x00\x001B\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\n=$\xcd\x94j\x00\x00\x01ZM\x01\x02\x00\x00\x001C' \ b'\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaa\x8f\xedQoj\x00\x00\xe1YM\x01\x02\x00\x00\x001D' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xa5h\x16\xe2Jj\x00\x00\xc1YM\x01\x02\x00\x00' \ b'\x001E\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb6\x87"\xfb%j\x00\x00\xa1YM\x01\x02\x00' \ b'\x00\x001F\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xec\xc90\xdc\x00j\x00\x00\x81YM\x01' \ b'\x02\x00\x00\x001G\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbc\xba\xc0`\xdbi\x00\x00aYM' \ b'\x01\x02\x00\x00\x001H\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb8qU/\xb6i\x00\x00AYM' \ b'\x01\x02\x00\x00\x001I\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x83\x82\xe2{' \ b'\x91i\x00\x00!YM\x01\x02\x00\x00\x001J\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc8\xb5\x945li\x00\x00\x01YM\x01\x02\x00\x00\x001K' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xae6\xae5Gi\x00\x00\xe1XM\x01\x02\x00\x00\x001L' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x0b\x04\x86D"i\x00\x00\xc1XM\x01\x02\x00\x00' \ b'\x001M\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8bN\xd9\xdc\xfdh\x00\x00\xa1XM\x01\x02' \ b'\x00\x00\x001N\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x12\'\\>\xd8h\x00\x00\x81XM\x01' \ b'\x02\x00\x00\x001O\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x92\x96\x8b\x82\xb3h\x00' \ b'\x00aXM\x01\x02\x00\x00\x001P\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xeex\x88\x98\x8eh' \ b'\x00\x00AXM\x01\x02\x00\x00\x001Q\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05d!3\x93ih\x00' \ b'\x00!XM\x01\x02\x00\x00\x001R\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd2\xf6\toDh\x00' \ b'\x00\x01XM\x01\x02\x00\x00\x001S\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x93\xb7\x1c1' \ b'\x1fh\x00\x00\xe1WM\x01\x02\x00\x00\x001T\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05%\xd4\xc1\x93\xfag\x00\x00\xc1WM\x01\x02\x00\x00' \ b'\x001U\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc5\xec\xda\x08\xd5g\x00\x00\xa1WM\x01' \ b'\x02\x00\x00\x001V\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x14\xc7\x84>\xb0g\x00\x00' \ b'\x81WM\x01\x02\x00\x00\x001W\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05N\xc9c\xab\x8bg\x00' \ b'\x00aWM\x01\x02\x00\x00\x001X\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05 ' \ b'\ru\xaafg\x00\x00AWM\x01\x02\x00\x00\x001Y\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x94FbWAg\x00\x00!WM\x01\x02\x00\x00\x001Z\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf01\xb1\xdd\x1cg\x00\x00\x01WM\x01\x02\x00\x00' \ b'\x0020\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05t\x00n\x0f\xf7f\x00\x00\xe1VM\x01\x02\x00' \ b'\x00\x0021\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaa\x85i,' \ b'\xd2f\x00\x00\xc1VM\x01\x02\x00\x00\x0022\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xae\x0fA\xf9\xadf\x00\x00\xa1VM\x01\x02\x00\x00' \ b'\x0023\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbc\x1e\xf9\x84\x88f\x00\x00\x81VM\x01' \ b'\x02\x00\x00\x0024\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05.\x98jGcf\x00\x00aVM\x01\x02' \ b'\x00\x00\x0025\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05_}0\x02>f\x00\x00AVM\x01\x02\x00' \ b'\x00\x0026\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xac\r\xc5\xae\x19f\x00\x00!VM\x01\x02' \ b'\x00\x00\x0027\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x056\x1c\xacP\xf4e\x00\x00\x01VM\x01' \ b'\x02\x00\x00\x0028\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05s\x1biZ\xcfe\x00\x00\xe1UM\x01' \ b'\x02\x00\x00\x0029\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaaw\xad9\xaae\x00\x00\xc1UM' \ b'\x01\x02\x00\x00\x002A\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x10\xe0c\x02\x85e\x00\x00' \ b'\xa1UM\x01\x02\x00\x00\x002B\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9e\x11\xcb\xf0`e' \ b'\x00\x00\x81UM\x01\x02\x00\x00\x002C\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x06\xb4\x06\xc4;e\x00\x00aUM\x01\x02\x00\x00\x002D' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05@\x92\xd21\x16e\x00\x00AUM\x01\x02\x00\x00\x002E' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x19\x85F\xad\xf1d\x00\x00!UM\x01\x02\x00\x00' \ b'\x002F\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbd\x8e\x15\xae\xccd\x00\x00\x01UM\x01' \ b'\x02\x00\x00\x002G\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05`]\xdb\x9a\xa7d\x00\x00\xe1TM' \ b'\x01\x02\x00\x00\x002H\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd2\xfd\xea;\x82d\x00\x00' \ b'\xc1TM\x01\x02\x00\x00\x002I\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x051\x14\x89\xd9]d\x00' \ b'\x00\xa1TM\x01\x02\x00\x00\x002J\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xda\xb6a\xe48d' \ b'\x00\x00\x81TM\x01\x02\x00\x00\x002K\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05V-w\xf7\x13d\x00\x00aTM\x01\x02\x00\x00\x002L\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcc\xe9%\xb0\xeec\x00\x00ATM\x01\x02\x00\x00\x002M' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05TR\xad\xcc\xc9c\x00\x00!TM\x01\x02\x00\x00\x002N' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05bX\xc6\x00\xa4c\x00\x00\x01TM\x01\x02\x00\x00' \ b'\x002O\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05l\x1b\xd5\x11\x7fc\x00\x00\xe1SM\x01\x02' \ b'\x00\x00\x002P\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1d\'}\xeaZc\x00\x00\xc1SM\x01' \ b'\x02\x00\x00\x002Q\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xff\xe2\xcf\xd75c\x00\x00' \ b'\xa1SM\x01\x02\x00\x00\x002R\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05=\xba\xfd\x9b\x10c' \ b'\x00\x00\x81SM\x01\x02\x00\x00\x002S\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x96\x11\xe0\x95\xebb\x00\x00aSM\x01\x02\x00\x00' \ b'\x002T\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x17\x04\xc6\x04\xc6b\x00\x00ASM\x01\x02' \ b'\x00\x00\x002U\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbd\x15\xcc(' \ b'\xa1b\x00\x00!SM\x01\x02\x00\x00\x002V\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05`\xf6O\xfb|b\x00\x00\x01SM\x01\x02\x00\x00\x002W\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05i@\xe1\xc5Wb\x00\x00\xe1RM\x01\x02\x00\x00\x002X\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05r\xb0\xd6\xf52b\x00\x00\xc1RM\x01\x02\x00\x00\x002Y' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1e\xd2\xa0\xfb\rb\x00\x00\xa1RM\x01\x02\x00' \ b'\x00\x002Z\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd1\xcb\xdb\xe2\xe8a\x00\x00\x81RM' \ b'\x01\x02\x00\x00\x0030\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf9.\xeeu\xc3a\x00\x00aRM' \ b'\x01\x02\x00\x00\x0031\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x053\xb4\xc8\xa1\x9ea\x00' \ b'\x00ARM\x01\x02\x00\x00\x0032\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb5\xc1\xefZya\x00' \ b'\x00!RM\x01\x02\x00\x00\x0033\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05@\x02Q\x9dTa\x00' \ b'\x00\x01RM\x01\x02\x00\x00\x0034\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x059\xd2\xc4&/a\x00' \ b'\x00\xe1QM\x01\x02\x00\x00\x0035\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfaw\r\x08\na' \ b'\x00\x00\xc1QM\x01\x02\x00\x00\x0036\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xed\xb4\xb4k\xe5`\x00\x00\xa1QM\x01\x02\x00\x00' \ b'\x0037\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x056\x8f\x10\xd3\xc0`\x00\x00\x81QM\x01\x02' \ b'\x00\x00\x0038\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05_\x82R\xcc\x9b`\x00\x00aQM\x01\x02' \ b'\x00\x00\x0039\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd7m\xc4\xc9v`\x00\x00AQM\x01\x02' \ b'\x00\x00\x003A\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf6uy\x8aQ`\x00\x00!QM\x01\x02' \ b'\x00\x00\x003B\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb8p1\xcf,' \ b'`\x00\x00\x01QM\x01\x02\x00\x00\x003C\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05Up\xc0@\x07`\x00\x00\xe1PM\x01\x02\x00\x00\x003D\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xecO\x00\xb3\xe2_\x00\x00\xc1PM\x01\x02\x00\x00' \ b'\x003E\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x10\x9f\x12\x91\xbd_\x00\x00\xa1PM\x01' \ b'\x02\x00\x00\x003F\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05+\xbc\xa3\x88\x98_\x00\x00' \ b'\x81PM\x01\x02\x00\x00\x003G\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05a\x9dM\xe9s_\x00' \ b'\x00aPM\x01\x02\x00\x00\x003H\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe98\x02/N_\x00' \ b'\x00APM\x01\x02\x00\x00\x003I\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05w\x14\x8c\xe6)_\x00' \ b'\x00!PM\x01\x02\x00\x00\x003J\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd0E\x03l\x04_\x00' \ b'\x00\x01PM\x01\x02\x00\x00\x003K\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf1\xb4\xeb\xae' \ b'\xdf^\x00\x00\xe1OM\x01\x02\x00\x00\x003L\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd4\xa0\'F\xba^\x00\x00\xc1OM\x01\x02\x00\x00\x003M' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05pR}\xf1\x95^\x00\x00\xa1OM\x01\x02\x00\x00\x003N' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05M\xde\xa4\xecp^\x00\x00\x81OM\x01\x02\x00\x00' \ b'\x003O\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05&\xf7\xeb\xb6K^\x00\x00aOM\x01\x02\x00\x00' \ b'\x003P\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x00\xf8\xcd|&^\x00\x00AOM\x01\x02\x00\x00' \ b'\x003Q\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x7f(' \ b'\xfb^\x01^\x00\x00!OM\x01\x02\x00\x00\x003R\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05R\x1b\x94z\xdc]\x00\x00\x01OM\x01\x02\x00\x00\x003S' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05g\xebI4\xb7]\x00\x00\xe1NM\x01\x02\x00\x00\x003T' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbf\xdd\x1d\xcf\x92]\x00\x00\xc1NM\x01\x02\x00' \ b'\x00\x003U\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb\xb2Q*m]\x00\x00\xa1NM\x01\x02\x00' \ b'\x00\x003V\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb6\x04\xa8\xd5H]\x00\x00\x81NM\x01' \ b'\x02\x00\x00\x003W\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x051\x00\xa7\xd1#]\x00\x00aNM\x01' \ b'\x02\x00\x00\x003X\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1e\x8eJ]\xfe\\\x00\x00ANM' \ b'\x01\x02\x00\x00\x003Y\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfd\x11\xc8\xaf\xd9\\\x00' \ b'\x00!NM\x01\x02\x00\x00\x003Z\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05CiG\x90\xb4\\\x00' \ b'\x00\x01NM\x01\x02\x00\x00\x0040\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb\t\x95K\x8f' \ b'\\\x00\x00\xe1MM\x01\x02\x00\x00\x0041\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xab\xd2\xd0\x9cj\\\x00\x00\xc1MM\x01\x02\x00\x00' \ b'\x0042\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x10\x1a\x18\xd3E\\\x00\x00\xa1MM\x01\x02' \ b'\x00\x00\x0043\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x90\xb5\x86\xc6 ' \ b'\\\x00\x00\x81MM\x01\x02\x00\x00\x0044\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc5\x99,' \ b'/\xfb[\x00\x00aMM\x01\x02\x00\x00\x0045\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbd0\xfej\xd6[\x00\x00AMM\x01\x02\x00\x00\x0046\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05S\xe8\xd4\x86\xb1[' \ b'\x00\x00!MM\x01\x02\x00\x00\x0047\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xad\r]>\x8c[' \ b'\x00\x00\x01MM\x01\x02\x00\x00\x0048\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05:\xe8\xf8\x97g[' \ b'\x00\x00\xe1LM\x01\x02\x00\x00\x0049\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05n[?\xeaB[' \ b'\x00\x00\xc1LM\x01\x02\x00\x00\x004A\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05)*m\x97\x1d[' \ b'\x00\x00\xa1LM\x01\x02\x00\x00\x004B\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x055\xccS\xc6\xf8Z\x00\x00\x81LM\x01\x02\x00\x00\x004C' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb3\x1d5?\xd3Z\x00\x00aLM\x01\x02\x00\x00\x004D' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf7\x16\x95\xe6\xaeZ\x00\x00ALM\x01\x02\x00\x00' \ b'\x004E\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9ck\xcf\xf4\x89Z\x00\x00!LM\x01\x02\x00' \ b'\x00\x004F\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05}\xf4\x07\x95dZ\x00\x00\x01LM\x01\x02' \ b'\x00\x00\x004G\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe0\xa1\x8fJ?Z\x00\x00\xe1KM\x01' \ b'\x02\x00\x00\x004H\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x18\xeb\x1c\xc2\x1aZ\x00\x00' \ b'\xc1KM\x01\x02\x00\x00\x004I\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05D\x91Y\xbc\xf5Y\x00' \ b'\x00\xa1KM\x01\x02\x00\x00\x004J\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x94\xe2\xcd\xba' \ b'\xd0Y\x00\x00\x81KM\x01\x02\x00\x00\x004K\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x16\x13\x88q\xabY\x00\x00aKM\x01\x02\x00\x00\x004L' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbf\x13\xfc\xa2\x86Y\x00\x00AKM\x01\x02\x00\x00' \ b'\x004M\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05l8\x93BaY\x00\x00!KM\x01\x02\x00\x00\x004N' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05A\xc2\x1d\x80\xb0\x83X\x00\x00aJM' \ b'\x01\x02\x00\x00\x004T\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf5\x05\xc9\xb4^X\x00' \ b'\x00AJM\x01\x02\x00\x00\x004U\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfb\xa9\xec\xe09X' \ b'\x00\x00!JM\x01\x02\x00\x00\x004V\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05s6\x0cw\x14X\x00\x00\x01JM\x01\x02\x00\x00\x004W\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc5d\xe9r\xefW\x00\x00\xe1IM\x01\x02\x00\x00\x004X' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x82{' \ b'\xb6*\xcaW\x00\x00\xc1IM\x01\x02\x00\x00\x004Y\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05C\xfe\xcd\x10\xa5W\x00\x00\xa1IM\x01\x02\x00\x00' \ b'\x004Z\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05j*\x1d\x8f\x80W\x00\x00\x81IM\x01\x02\x00' \ b'\x00\x0050\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe3\xad\xf0\x83[' \ b'W\x00\x00aIM\x01\x02\x00\x00\x0051\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x85\x90\xbb\xe36W\x00\x00AIM\x01\x02\x00\x00\x0052' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe7\x14\xda\xa7\x11W\x00\x00!IM\x01\x02\x00\x00' \ b'\x0053\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xdd\xde\x83\xe8\xecV\x00\x00\x01IM\x01' \ b'\x02\x00\x00\x0054\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfcfm\x8c\xc7V\x00\x00\xe1HM' \ b'\x01\x02\x00\x00\x0055\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xed\xadFp\xa2V\x00\x00' \ b'\xc1HM\x01\x02\x00\x00\x0056\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9dh0\x9a}V\x00\x00' \ b'\xa1HM\x01\x02\x00\x00\x0057\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd6\xcdd\x91XV\x00' \ b'\x00\x81HM\x01\x02\x00\x00\x0058\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x99\xe6\x86' \ b'\xe93V\x00\x00aHM\x01\x02\x00\x00\x0059\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb6\xff\x82B\x0eV\x00\x00AHM\x01\x02\x00\x00\x005A' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc1R\xd7+\xe9U\x00\x00!HM\x01\x02\x00\x00\x005B' \ b'\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x19\r)\xcb\xc4U\x00\x00\x01HM\x01\x02\x00\x00' \ b'\x005C\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaa\x07\xd1+\x9fU\x00\x00\xe1GM\x01\x02' \ b'\x00\x00\x005D\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05]4\x8f\xadzU\x00\x00\xc1GM\x01\x02' \ b'\x00\x00\x005E\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb7\xf4;\xc8UU\x00\x00\xa1GM\x01' \ b'\x02\x00\x00\x005F\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xeaN\xedc0U\x00\x00\x81GM\x01' \ b'\x02\x00\x00\x005G\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb7\xd9\x99?\x0bU\x00\x00aGM' \ b'\x01\x02\x00\x00\x005H\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9a\xec\x13\xef\xe6T\x00' \ b'\x00AGM\x01\x02\x00\x00\x005I\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05~\x94\x0e\xf1\xc1T' \ b'\x00\x00!GM\x01\x02\x00\x00\x005J\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x08\x99\xd0\xf7\x9cT\x00\x00\x01GM\x01\x02\x00\x00' \ b'\x005K\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8e\x14\xb2bwT\x00\x00\xe1FM\x01\x02\x00' \ b'\x00\x005L\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xa11\x03\xa6RT\x00\x00\xc1FM\x01\x02' \ b'\x00\x00\x005M\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8aS\xa4\xcd-T\x00\x00\xa1FM\x01' \ b'\x02\x00\x00\x005N\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9d\x0e\xe9\xdf\x08T\x00\x00' \ b'\x81FM\x01\x02\x00\x00\x005O\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1b\rI\xaa\xe3S\x00' \ b'\x00aFM\x01\x02\x00\x00\x005P\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05k\x03Gz\xbeS\x00' \ b'\x00AFM\x01\x02\x00\x00\x005Q\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xca0\xb4\xa5\x99S' \ b'\x00\x00!FM\x01\x02\x00\x00\x005R\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05,' \ b'^\xb9JtS\x00\x00\x01FM\x01\x02\x00\x00\x005S\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf3\x1e\x07\xfcOS\x00\x00\xe1EM\x01\x02\x00\x00' \ b'\x005T\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05Oo\x8c\x8a*S\x00\x00\xc1EM\x01\x02\x00\x00' \ b'\x005U\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb?~\x93\x05S\x00\x00\xa1EM\x01\x02\x00' \ b'\x00\x005V\x00 \x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf4,' \ b'\x82\xf1\xe0R\x00\x00\x81EM\x01\x02\x00\x00\x005W\x00 ' \ b'\x00\xdf\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05Q\xbaZ\x17\xbbR\x00\x00aEM\x01\x02\x00\x00\x005X\xed' \ b'\xc0\x81\x08\x00\x00\x00\xc00\xd6\xfbK\\d\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00`PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfbXR\xe8\x95v\x00\x00^dM\x01' \ b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x000PK\x01\x02\x14\x00\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05z)V>qv\x00\x00?dM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x00' \ b'\x001PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05X>){Mv\x00\x00 ' \ b'dM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x002PK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05x\xda\xd9L)v\x00\x00\x01dM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00l' \ b'\x00\x00\x003PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05>\x890\x03\x05v\x00\x00\xe2cM\x01\x01\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x004PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x04iN9\xe1u\x00\x00\xc3cM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00' \ b'\x005PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05(' \ b'\xd1\xfc\xda\xbdu\x00\x00\xa4cM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00' \ b'\x006PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x15\x83\x9f[' \ b'\x99u\x00\x00\x85cM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x007PK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05d\xcf\x95Xuu\x00\x00fcM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00 \x01\x00\x008PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05!BA\xe6Qu\x00\x00GcM\x01' \ b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\x01\x00\x009PK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\x90n\xed6-u\x00\x00(cM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x01\x00' \ b'\x00APK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05#\xf6\xf8\xe2\tu\x00\x00\tcM\x01\x01\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x01\x00\x00BPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xa6' \ b'\xc5\xc4\xcf\xe5t\x00\x00\xeabM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x01\x00' \ b'\x00CPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe4\x19QC\xc1t\x00\x00\xcbbM\x01\x01\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00DPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05' \ b'\xb2\x8b\xb4u\x9dt\x00\x00\xacbM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00' \ b'\x00EPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x88`\xf60yt\x00\x00\x8dbM\x01\x01\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00FPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb7' \ b'\x15fDUt\x00\x00nbM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x02\x00\x00GPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x90\x03\xcdZ1t\x00\x00ObM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00d\x02\x00\x00HPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcfZ\xa9;\rt\x00\x000bM' \ b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00IPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\xean\xe3e\xe9s\x00\x00\x11bM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\xac\x02\x00\x00JPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xba\x7f,' \ b'\x9c\xc5s\x00\x00\xf2aM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00KPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x95\xfa3\x8c\xa1s\x00\x00\xd3aM\x01\x01\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00LPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbc' \ b'.\xb0\xbe}s\x00\x00\xb4aM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00MPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05i\xd1\\\x88Ys\x00\x00\x95aM\x01\x01\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00<\x03\x00\x00NPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\r\x84\xc0\xda5s' \ b'\x00\x00vaM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x03\x00\x00OPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xdc\xaf,' \ b'b\x11s\x00\x00WaM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00PPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9b\xfe\x15\x8d\xedr\x00\x008aM\x01\x01\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00QPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\'%jF\xc9r\x00' \ b'\x00\x19aM\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00RPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xa7\x89\x056\xa5r\x00\x00\xfa`M\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\xf0\x03\x00\x00SPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe0`?\xbd\x81r\x00\x00' \ b'\xdb`M\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00TPK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05\xba\xa1\xdcB]r\x00\x00\xbc`M\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x008\x04\x00\x00UPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x88\xb1\xa4\xc39r\x00\x00\x9d`M' \ b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x04\x00\x00VPK\x01\x02\x14\x00\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05jqM\x8c\x15r\x00\x00~`M\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x04' \ b'\x00\x00WPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd1+\xf1\x1d\xf1q\x00\x00_`M\x01\x01\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00XPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH' \ b'\x05\x12\xf8(_\xcdq\x00\x00@`M\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x04\x00\x00YPK' \ b'\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x99\xacY\xe2\xa9q\x00\x00!`M\x01\x01\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00ZPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb3\xd5' \ b'\xf6\x98\x84q\x00\x00\x01`M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x05\x00\x0000PK' \ b'\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb0\xff\x13~_q\x00\x00\xe1_M\x01\x02\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x005\x05\x00\x0001PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x0c\x9fI' \ b';:q\x00\x00\xc1_M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Z\x05\x00\x0002PK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x18/\xbb\xe9\x15q\x00\x00\xa1_M\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x7f\x05\x00\x0003PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x84\xb37\x0c' \ b'\xf0p\x00\x00\x81_M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x05\x00\x0004PK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf2\xc6T\xd6\xcbp\x00\x00a_M\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\xc9\x05\x00\x0005PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05urkX\xa6p\x00' \ b'\x00A_M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x05\x00\x0006PK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05F\x9b%f\x81p\x00\x00!_M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x13\x06\x00\x0007PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x0cb\x0eh\\p\x00\x00\x01_M\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x008\x06\x00\x0008PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x9a\xe8 \x8f7p\x00\x00\xe1^M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00]\x06\x00' \ b'\x0009PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8b\x86G\x1d\x12p\x00\x00\xc1^M\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x06\x00\x000APK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\xe3/\x83\xa3\xedo\x00\x00\xa1^M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7' \ b'\x06\x00\x000BPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05Bh ' \ b'H\xc8o\x00\x00\x81^M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x06\x00\x000CPK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb7a\x99\xd7\xa3o\x00\x00a^M\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\xf1\x06\x00\x000DPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05+wRl~o\x00\x00A' \ b'^M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x07\x00\x000EPK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05\xbc\xb0C\xb7Yo\x00\x00!^M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00;\x07\x00\x000FPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc3`\xfb%4o\x00\x00\x01^M\x01\x02\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x07\x00\x000GPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x02\xf8X\xa3\x0fo\x00\x00\xe1]M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85' \ b'\x07\x00\x000HPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x12Y7\x0f\xean\x00\x00\xc1]M\x01\x02\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x07\x00\x000IPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05NP\x15\xaf\xc5n\x00\x00\xa1]M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x07' \ b'\x00\x000JPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05A\x0bB\xb9\xa0n\x00\x00\x81]M\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x07\x00\x000KPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x19f\xc8x{n\x00\x00a]M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x08\x00' \ b'\x000LPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xa7\xb0\xfeWVn\x00\x00A]M\x01\x02\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00>\x08\x00\x000MPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xed' \ b'\xd0\r\xb11n\x00\x00!]M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00c\x08\x00\x000NPK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x14\xeb\xba\xf1\x0cn\x00\x00\x01]M\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x88\x08\x00\x000OPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9e\x85K' \ b'\xce\xe7m\x00\x00\xe1\\M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x08\x00\x000PPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xdf\xe7vB\xc2m\x00\x00\xc1\\M\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\xd2\x08\x00\x000QPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc1\x92' \ b'\x03\xc7\x9dm\x00\x00\xa1\\M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x08\x00\x000RPK' \ b'\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05%\xd6\xe2\xa8xm\x00\x00\x81\\M\x01\x02\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x1c\t\x00\x000SPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfd\x99{' \ b'iSm\x00\x00a\\M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00A\t\x00\x000TPK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05\x02\x05\xcf5.m\x00\x00A\\M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00f\t\x00\x000UPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x16u\x88!\tm\x00\x00!\\M\x01' \ b'\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\t\x00\x000VPK\x01\x02\x14\x00\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05\xc0\x83S\xdc\xe4l\x00\x00\x01\\M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\xb0\t\x00\x000WPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x97\x98=x\xbfl\x00\x00\xe1[' \ b'M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\t\x00\x000XPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\x13L\xe7\xa9\x9al\x00\x00\xc1[' \ b'M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\t\x00\x000YPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05T9\x8e\xd6ul\x00\x00\xa1[' \ b'M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\n\x00\x000ZPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\x16\xb7\xa8XPl\x00\x00\x81[' \ b'M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\n\x00\x0010PK\x01\x02\x14\x00\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05\xd4A5!+l\x00\x00a[M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00i\n\x00' \ b'\x0011PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1a\xa7\x1a\x81\x06l\x00\x00A[' \ b'M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\n\x00\x0012PK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05~\xff:&\xe1k\x00\x00![' \ b'M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\n\x00\x0013PK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x052/\x96Y\xbck\x00\x00\x01[' \ b'M\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\n\x00\x0014PK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\xda\x1df\x80\x97k\x00\x00\xe1ZM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\xfd\n\x00\x0015PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05t\xa6\xb5\xb3rk\x00\x00\xc1ZM\x01' \ b'\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"\x0b\x00\x0016PK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\xe5\xce\xd6\rMk\x00\x00\xa1ZM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00G\x0b' \ b'\x00\x0017PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05f\x8b\xf0\xd5(' \ b'k\x00\x00\x81ZM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00l\x0b\x00\x0018PK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb\xe2\xf1x\x03k\x00\x00aZM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x91\x0b\x00\x0019PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05~\xe2|\x13\xdej\x00' \ b'\x00AZM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x0b\x00\x001APK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05?!\x19,' \ b'\xb9j\x00\x00!ZM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x0b\x00\x001BPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\n=$\xcd\x94j\x00\x00\x01ZM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x0c\x00\x001CPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaa\x8f\xedQoj\x00\x00' \ b'\xe1YM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x0c\x00\x001DPK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05\xa5h\x16\xe2Jj\x00\x00\xc1YM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00J\x0c\x00\x001EPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb6\x87"\xfb%j\x00\x00\xa1YM\x01' \ b'\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00o\x0c\x00\x001FPK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\xec\xc90\xdc\x00j\x00\x00\x81YM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x94\x0c\x00\x001GPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbc\xba\xc0`\xdbi\x00\x00aYM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x0c\x00\x001HPK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\xb8qU/\xb6i\x00\x00AYM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x0c\x00' \ b'\x001IPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x83\x82\xe2{' \ b'\x91i\x00\x00!YM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\r\x00\x001JPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc8\xb5\x945li\x00\x00\x01YM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00(\r\x00\x001KPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xae6\xae5Gi\x00\x00' \ b'\xe1XM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00M\r\x00\x001LPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\x0b\x04\x86D"i\x00\x00\xc1XM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00r\r\x00\x001MPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8bN\xd9\xdc\xfdh\x00\x00\xa1XM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\r\x00\x001NPK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\x12\'\\>\xd8h\x00\x00\x81XM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\r' \ b'\x00\x001OPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x92\x96\x8b\x82\xb3h\x00\x00aXM\x01\x02\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\r\x00\x001PPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\xeex\x88\x98\x8eh\x00\x00AXM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x0e' \ b'\x00\x001QPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05d!3\x93ih\x00\x00!XM\x01\x02\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00+\x0e\x00\x001RPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd2' \ b'\xf6\toDh\x00\x00\x01XM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00P\x0e\x00\x001SPK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x93\xb7\x1c1\x1fh\x00\x00\xe1WM\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00u\x0e\x00\x001TPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05%\xd4\xc1\x93' \ b'\xfag\x00\x00\xc1WM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x0e\x00\x001UPK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc5\xec\xda\x08\xd5g\x00\x00\xa1WM\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\xbf\x0e\x00\x001VPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x14\xc7' \ b'\x84>\xb0g\x00\x00\x81WM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x0e\x00\x001WPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05N\xc9c\xab\x8bg\x00\x00aWM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\t\x0f\x00\x001XPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05 ' \ b'\ru\xaafg\x00\x00AWM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.\x0f\x00\x001YPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x94FbWAg\x00\x00!WM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00S\x0f\x00\x001ZPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf01\xb1\xdd\x1cg\x00\x00' \ b'\x01WM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x0f\x00\x0020PK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05t\x00n\x0f\xf7f\x00\x00\xe1VM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x9d\x0f\x00\x0021PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaa\x85i,' \ b'\xd2f\x00\x00\xc1VM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x0f\x00\x0022PK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xae\x0fA\xf9\xadf\x00\x00\xa1VM\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\xe7\x0f\x00\x0023PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbc\x1e' \ b'\xf9\x84\x88f\x00\x00\x81VM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x10\x00\x0024PK' \ b'\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05.\x98jGcf\x00\x00aVM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x001\x10\x00\x0025PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05_}0\x02>f\x00' \ b'\x00AVM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00V\x10\x00\x0026PK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05\xac\r\xc5\xae\x19f\x00\x00!VM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00{\x10\x00\x0027PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x056\x1c\xacP\xf4e\x00\x00\x01VM\x01' \ b'\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x10\x00\x0028PK\x01\x02\x14\x00\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05s\x1biZ\xcfe\x00\x00\xe1UM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5' \ b'\x10\x00\x0029PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaaw\xad9\xaae\x00\x00\xc1UM\x01\x02\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x10\x00\x002APK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x10\xe0c\x02\x85e\x00\x00\xa1UM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f' \ b'\x11\x00\x002BPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9e\x11\xcb\xf0`e\x00\x00\x81UM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004\x11\x00\x002CPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x06\xb4\x06\xc4;e\x00\x00aUM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Y\x11\x00' \ b'\x002DPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05@\x92\xd21\x16e\x00\x00AUM\x01\x02\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00~\x11\x00\x002EPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x19' \ b'\x85F\xad\xf1d\x00\x00!UM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x11\x00\x002FPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbd\x8e\x15\xae\xccd\x00\x00\x01UM\x01\x02\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x11\x00\x002GPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05`]\xdb' \ b'\x9a\xa7d\x00\x00\xe1TM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x11\x00\x002HPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd2\xfd\xea;\x82d\x00\x00\xc1TM\x01\x02\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x12\x12\x00\x002IPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x051\x14' \ b'\x89\xd9]d\x00\x00\xa1TM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x007\x12\x00\x002JPK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xda\xb6a\xe48d\x00\x00\x81TM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\\\x12\x00\x002KPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05V-w\xf7\x13d\x00' \ b'\x00aTM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x12\x00\x002LPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xcc\xe9%\xb0\xeec\x00\x00ATM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\xa6\x12\x00\x002MPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05TR\xad\xcc\xc9c\x00\x00!TM' \ b'\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x12\x00\x002NPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05bX\xc6\x00\xa4c\x00\x00\x01TM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\xf0\x12\x00\x002OPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05l\x1b\xd5\x11\x7fc\x00\x00\xe1SM' \ b'\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x13\x00\x002PPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\x1d\'}\xeaZc\x00\x00\xc1SM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b':\x13\x00\x002QPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xff\xe2\xcf\xd75c\x00\x00\xa1SM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00_\x13\x00\x002RPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05=\xba\xfd\x9b\x10c\x00\x00\x81SM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84' \ b'\x13\x00\x002SPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x96\x11\xe0\x95\xebb\x00\x00aSM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x13\x00\x002TPK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\x17\x04\xc6\x04\xc6b\x00\x00ASM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\xce\x13\x00\x002UPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbd\x15\xcc(' \ b'\xa1b\x00\x00!SM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x13\x00\x002VPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05`\xf6O\xfb|b\x00\x00\x01SM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x18\x14\x00\x002WPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05i@\xe1\xc5Wb\x00\x00' \ b'\xe1RM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00=\x14\x00\x002XPK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05r\xb0\xd6\xf52b\x00\x00\xc1RM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00b\x14\x00\x002YPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1e\xd2\xa0\xfb\rb\x00\x00\xa1RM' \ b'\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x14\x00\x002ZPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\xd1\xcb\xdb\xe2\xe8a\x00\x00\x81RM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\xac\x14\x00\x0030PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf9.\xeeu\xc3a\x00\x00aRM\x01' \ b'\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x14\x00\x0031PK\x01\x02\x14\x00\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x053\xb4\xc8\xa1\x9ea\x00\x00ARM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\xf6\x14\x00\x0032PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb5\xc1\xefZya\x00\x00!RM\x01\x02\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x15\x00\x0033PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05@\x02Q\x9dTa\x00\x00\x01RM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x15\x00' \ b'\x0034PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x059\xd2\xc4&/a\x00\x00\xe1QM\x01\x02\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00e\x15\x00\x0035PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfaw' \ b'\r\x08\na\x00\x00\xc1QM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x15\x00\x0036PK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xed\xb4\xb4k\xe5`\x00\x00\xa1QM\x01\x02\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x15\x00\x0037PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x056\x8f' \ b'\x10\xd3\xc0`\x00\x00\x81QM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x15\x00\x0038PK' \ b'\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05_\x82R\xcc\x9b`\x00\x00aQM\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\xf9\x15\x00\x0039PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd7m\xc4' \ b'\xc9v`\x00\x00AQM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x16\x00\x003APK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf6uy\x8aQ`\x00\x00!QM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00C\x16\x00\x003BPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb8p1\xcf,' \ b'`\x00\x00\x01QM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x16\x00\x003CPK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05Up\xc0@\x07`\x00\x00\xe1PM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x8d\x16\x00\x003DPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xecO\x00\xb3\xe2_\x00\x00' \ b'\xc1PM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x16\x00\x003EPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\x10\x9f\x12\x91\xbd_\x00\x00\xa1PM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\xd7\x16\x00\x003FPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05+\xbc\xa3\x88\x98_\x00' \ b'\x00\x81PM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x16\x00\x003GPK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05a\x9dM\xe9s_\x00\x00aPM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00!\x17\x00\x003HPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe98\x02/N_\x00\x00APM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00F\x17\x00\x003IPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05w\x14\x8c\xe6)_\x00\x00!PM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00k\x17\x00' \ b'\x003JPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd0E\x03l\x04_\x00\x00\x01PM\x01\x02\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x17\x00\x003KPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH' \ b'\x05\xf1\xb4\xeb\xae\xdf^\x00\x00\xe1OM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x17' \ b'\x00\x003LPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd4\xa0\'F\xba^\x00\x00\xc1OM\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x17\x00\x003MPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05pR}\xf1\x95^\x00\x00\xa1OM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x17\x00' \ b'\x003NPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05M\xde\xa4\xecp^\x00\x00\x81OM\x01\x02\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x18\x00\x003OPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05' \ b'&\xf7\xeb\xb6K^\x00\x00aOM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00I\x18\x00\x003PPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x00\xf8\xcd|&^\x00\x00AOM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00n\x18\x00\x003QPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x7f(' \ b'\xfb^\x01^\x00\x00!OM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x18\x00\x003RPK\x01\x02' \ b'\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05R\x1b\x94z\xdc]\x00\x00\x01OM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\xb8\x18\x00\x003SPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05g\xebI4\xb7' \ b']\x00\x00\xe1NM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x18\x00\x003TPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbf\xdd\x1d\xcf\x92]\x00\x00\xc1NM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x02\x19\x00\x003UPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb\xb2Q*m' \ b']\x00\x00\xa1NM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'\x19\x00\x003VPK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb6\x04\xa8\xd5H]\x00\x00\x81NM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00L\x19\x00\x003WPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x051\x00\xa7\xd1#]\x00' \ b'\x00aNM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00q\x19\x00\x003XPK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05\x1e\x8eJ]\xfe\\\x00\x00ANM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x96\x19\x00\x003YPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfd\x11\xc8\xaf\xd9\\\x00\x00!NM' \ b'\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x19\x00\x003ZPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05CiG\x90\xb4\\\x00\x00\x01NM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\xe0\x19\x00\x0040PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb\t\x95K\x8f\\\x00\x00\xe1MM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x1a\x00\x0041PK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\xab\xd2\xd0\x9cj\\\x00\x00\xc1MM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'*\x1a\x00\x0042PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x10\x1a\x18\xd3E\\\x00\x00\xa1MM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00O\x1a\x00\x0043PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00' \ b'\xa0lH\x05\x90\xb5\x86\xc6 \\\x00\x00\x81MM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00t\x1a' \ b'\x00\x0044PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc5\x99,' \ b'/\xfb[\x00\x00aMM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x1a\x00\x0045PK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xbd0\xfej\xd6[' \ b'\x00\x00AMM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x1a\x00\x0046PK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05S\xe8\xd4\x86\xb1[' \ b'\x00\x00!MM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x1a\x00\x0047PK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05\xad\r]>\x8c[' \ b'\x00\x00\x01MM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x1b\x00\x0048PK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05:\xe8\xf8\x97g[' \ b'\x00\x00\xe1LM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-\x1b\x00\x0049PK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05n[?\xeaB[' \ b'\x00\x00\xc1LM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00R\x1b\x00\x004APK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x05)*m\x97\x1d[' \ b'\x00\x00\xa1LM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00w\x1b\x00\x004BPK\x01\x02\x14\x00' \ b'\x14\x00\x00\x00\x08\x00\xa0lH\x055\xccS\xc6\xf8Z\x00\x00\x81LM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x9c\x1b\x00\x004CPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb3\x1d5?\xd3Z\x00' \ b'\x00aLM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x1b\x00\x004DPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xf7\x16\x95\xe6\xaeZ\x00\x00ALM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\xe6\x1b\x00\x004EPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9ck\xcf\xf4\x89Z\x00' \ b'\x00!LM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x1c\x00\x004FPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05}\xf4\x07\x95dZ\x00\x00\x01LM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x000\x1c\x00\x004GPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe0\xa1\x8fJ?Z\x00\x00\xe1KM' \ b'\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\x1c\x00\x004HPK\x01\x02\x14\x00\x14\x00\x00\x00' \ b'\x08\x00\xa0lH\x05\x18\xeb\x1c\xc2\x1aZ\x00\x00\xc1KM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00z\x1c\x00\x004IPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05D\x91Y\xbc\xf5Y\x00\x00\xa1KM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x1c\x00\x004JPK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\x94\xe2\xcd\xba\xd0Y\x00\x00\x81KM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\xc4\x1c\x00\x004KPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x16\x13\x88q\xabY\x00\x00aKM\x01\x02' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x1c\x00\x004LPK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\xbf\x13\xfc\xa2\x86Y\x00\x00AKM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x0e\x1d\x00\x004MPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05l8\x93BaY\x00\x00!KM\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\x1d\x00\x004NPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH' \ b'\x05A\xc2\x1d\x80\xb0\x83X\x00\x00aJM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x11\x1e\x00\x004TPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf5\x05\xc9' \ b'\xb4^X\x00\x00AJM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x006\x1e\x00\x004UPK\x01\x02\x14' \ b'\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfb\xa9\xec\xe09X\x00\x00!JM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00[\x1e\x00\x004VPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05s6\x0cw\x14X\x00\x00' \ b'\x01JM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x1e\x00\x004WPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xc5d\xe9r\xefW\x00\x00\xe1IM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\xa5\x1e\x00\x004XPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x82{' \ b'\xb6*\xcaW\x00\x00\xc1IM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x1e\x00\x004YPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05C\xfe\xcd\x10\xa5W\x00\x00\xa1IM\x01\x02\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\xef\x1e\x00\x004ZPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05j*\x1d' \ b'\x8f\x80W\x00\x00\x81IM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x1f\x00\x0050PK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe3\xad\xf0\x83[' \ b'W\x00\x00aIM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x009\x1f\x00\x0051PK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\x85\x90\xbb\xe36W\x00\x00AIM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00^\x1f\x00\x0052PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe7\x14\xda\xa7\x11W\x00\x00' \ b'!IM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x1f\x00\x0053PK\x01\x02\x14\x00\x14\x00' \ b'\x00\x00\x08\x00\xa0lH\x05\xdd\xde\x83\xe8\xecV\x00\x00\x01IM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\xa8\x1f\x00\x0054PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xfcfm\x8c\xc7V\x00\x00' \ b'\xe1HM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x1f\x00\x0055PK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xed\xadFp\xa2V\x00\x00\xc1HM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\xf2\x1f\x00\x0056PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9dh0\x9a}V\x00\x00\xa1HM' \ b'\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17 ' \ b'\x00\x0057PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xd6\xcdd\x91XV\x00\x00\x81HM\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00< ' \ b'\x00\x0058PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x99\xe6\x86\xe93V\x00\x00aHM\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00a ' \ b'\x00\x0059PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb6\xff\x82B\x0eV\x00\x00AHM\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86 ' \ b'\x00\x005APK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xc1R\xd7+\xe9U\x00\x00!HM\x01\x02\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab ' \ b'\x00\x005BPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x19\r)\xcb\xc4U\x00\x00\x01HM\x01\x02\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0 ' \ b'\x00\x005CPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xaa\x07\xd1+\x9fU\x00\x00\xe1GM\x01\x02\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5 ' \ b'\x00\x005DPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05]4\x8f\xadzU\x00\x00\xc1GM\x01\x02\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a!\x00\x005EPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05' \ b'\xb7\xf4;\xc8UU\x00\x00\xa1GM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?!\x00\x005FPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xeaN\xedc0U\x00\x00\x81GM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00d!\x00\x005GPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xb7\xd9\x99?\x0bU' \ b'\x00\x00aGM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89!\x00\x005HPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\x9a\xec\x13\xef\xe6T\x00\x00AGM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\xae!\x00\x005IPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05~\x94\x0e\xf1\xc1T\x00\x00' \ b'!GM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3!\x00\x005JPK\x01\x02\x14\x00\x14\x00\x00' \ b'\x00\x08\x00\xa0lH\x05\x08\x99\xd0\xf7\x9cT\x00\x00\x01GM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\xf8!\x00\x005KPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8e\x14\xb2bwT\x00\x00\xe1FM\x01' \ b'\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d"\x00\x005LPK\x01\x02\x14\x00\x14\x00\x00\x00\x08' \ b'\x00\xa0lH\x05\xa11\x03\xa6RT\x00\x00\xc1FM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00B"\x00' \ b'\x005MPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x8aS\xa4\xcd-T\x00\x00\xa1FM\x01\x02\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00g"\x00\x005NPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x9d' \ b'\x0e\xe9\xdf\x08T\x00\x00\x81FM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c"\x00\x005OPK' \ b'\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\x1b\rI\xaa\xe3S\x00\x00aFM\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\xb1"\x00\x005PPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05k\x03Gz\xbeS' \ b'\x00\x00AFM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6"\x00\x005QPK\x01\x02\x14\x00\x14' \ b'\x00\x00\x00\x08\x00\xa0lH\x05\xca0\xb4\xa5\x99S\x00\x00!FM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\xfb"\x00\x005RPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05,' \ b'^\xb9JtS\x00\x00\x01FM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 ' \ b'#\x00\x005SPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf3\x1e\x07\xfcOS\x00\x00\xe1EM\x01\x02\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00E#\x00\x005TPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH' \ b'\x05Oo\x8c\x8a*S\x00\x00\xc1EM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00j#\x00\x005UPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xcb?~\x93\x05S\x00\x00\xa1EM\x01\x02\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x8f#\x00\x005VPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xf4,' \ b'\x82\xf1\xe0R\x00\x00\x81EM\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4#\x00\x005WPK\x01' \ b'\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05Q\xbaZ\x17\xbbR\x00\x00aEM\x01\x02\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\xd9#\x00\x005XPK\x05\x06\x00\x00\x00\x00\xfa\x00\xfa\x00\xbc.\x00\x00\xb4v\x00\x00' \ b'\x00\x00 ' ================================================ FILE: tests/filters/__init__.py ================================================ ================================================ FILE: tests/filters/conftest.py ================================================ import re import pytest from credsweeper.common.keyword_pattern import KeywordPattern from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.descriptor import Descriptor success_line_list = [ # "\"passwd\": \"Crackle4421\"", # "passwd = Crackle4421", # "passwd = 'Crackle4421'", # "passwd='''MyP@5$word''';", # 'passwd="""MyP@5$word""";', # "passwd = 'Crackle4421'", # "export passwd=Crackle4421;", # "// passwd = Crackle4421", # "/* passwd = Crackle4421", # " * passwd = Crackle4421", # "# passwd = Crackle4421", # ] @pytest.fixture(params=success_line_list) def success_line(request) -> str: return request.param KEYWORD_PASSWORD_PATTERN = KeywordPattern.get_keyword_pattern( r"(?.*)$") LINE_VARIABLE_PATTERN = re.compile(r"^(?P.*)$") DUMMY_DESCRIPTOR = Descriptor("", "", "") DUMMY_ANALYSIS_TARGET = AnalysisTarget(line_pos=0, lines=[""], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) ================================================ FILE: tests/filters/test_line_git_binary_check.py ================================================ import pytest from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import LineGitBinaryCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR from tests.test_utils.dummy_line_data import get_line_data class TestLineGitBinaryCheck: @pytest.mark.parametrize("line", ['{"test":1,"pw":"sn2e8dgWwW","payload":"EYlS}b+C(YT)lWLGxNdj7Pw=w"}', 'XcmV?d00001']) def test_line_specific_key_check_p(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) assert LineGitBinaryCheck().run(cred_candidate, target) is False @pytest.mark.parametrize("line", ['zxNdj)EYlS}b8JGyg7Pw=wujtWvwg9)mv+;vvr}dADtX-(^(6N+C(YT)lWLG7tdu$7', 'HcmV?d00001']) def test_line_specific_key_check_n(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) assert LineGitBinaryCheck().run(cred_candidate, target) is True ================================================ FILE: tests/filters/test_line_specific_key_check.py ================================================ import pytest from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import LineSpecificKeyCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR from tests.test_utils.dummy_line_data import get_line_data class TestLineSpecificKeyCheck: @pytest.mark.parametrize("line", [ '"AwsAccessKey": "AKIAGIREOGIAWSKEY123,', ]) def test_line_specific_key_check_p(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) assert LineSpecificKeyCheck().run(cred_candidate, target) is False @pytest.mark.parametrize("line", [ '"AwsAccessKey": enc("AKIAGIREOGIAWSKEY123"),', '"AwsAccessKey as example": "AKIAGIREXAMPLEKEY123"', ]) def test_line_specific_key_check_n(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) # LINE_VALUE_PATTERN does not detect a value position cred_candidate.value_start = line.find("AKIA") target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) assert LineSpecificKeyCheck().run(cred_candidate, target) is True ================================================ FILE: tests/filters/test_line_uue_part_check.py ================================================ from unittest import TestCase from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters.line_uue_part_check import LineUUEPartCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR from tests.test_utils.dummy_line_data import get_line_data class TestLineUUEPartCheck(TestCase): def test_line_uue_part_check_short_n(self): line = """#````""" cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) target = AnalysisTarget(line_pos=0, lines=[line, line], line_nums=[1, 2], descriptor=DUMMY_DESCRIPTOR) self.assertFalse(LineUUEPartCheck().run(cred_candidate, target)) def test_line_uue_part_check_uue__n(self): line = """M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]"H3Y@6$#I4V*R^"+B,2P6`A)UL""" cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) cred_candidate.line_pos = 1 target = AnalysisTarget(line_pos=1, lines=["begin 644 x3wo.bin", line, "#````", "`", "end"], line_nums=[1, 2, 3, 4, 5], descriptor=DUMMY_DESCRIPTOR) self.assertFalse(LineUUEPartCheck().run(cred_candidate, target)) def test_line_uue_part_single_n(self): line = """M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]"H3Y@6$#I4V*R^"+B,2P6`A)UL""" cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) self.assertFalse(LineUUEPartCheck().run(cred_candidate, target)) def test_line_uue_part_check_n(self): line = """M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]"H3Y@6$#I4V*R^"D+lowercase""" cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) target = AnalysisTarget(line_pos=0, lines=[line, line], line_nums=[1, 2], descriptor=DUMMY_DESCRIPTOR) self.assertFalse(LineUUEPartCheck().run(cred_candidate, target)) def test_line_uue_part_check_p(self): line = """M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]"H3Y@6$#I4V*R^"+B,2P6`A)UL""" cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) target = AnalysisTarget(line_pos=0, lines=[line, line], line_nums=[1, 2], descriptor=DUMMY_DESCRIPTOR) self.assertTrue(LineUUEPartCheck().run(cred_candidate, target)) # check for empty line cred_candidate.line = '' self.assertTrue(LineUUEPartCheck().run(cred_candidate, target)) ================================================ FILE: tests/filters/test_value_allowlist_check.py ================================================ import pytest from credsweeper.filters import ValueAllowlistCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN from tests.test_utils.dummy_line_data import get_line_data class TestValueAllowlistCheck: @pytest.mark.parametrize( "line", [ # "password = $4eCr3t", # "pass=$((0394584039))", # "password = 'F(b7)]DAS^iCv0vqIJOvGg<5(pass);", # "password = ***test***", # "password = .*@@@@@@", # "pass=get->pass('''ARGS", # "password = '$34%4reGE_'", # "password = '$D34%4reGE_'", # ]) def test_value_allowlist_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path=file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueAllowlistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize( "line", [ # '$passwordLabel = $sourceLabel.SelectItem("password")', # 'password=$this->cryptCore->getPw()', # 'password=$this::cryptCore', # 'pass=$(a-tool-invocation --arg 1)', # ??? 'pass="$(a-tool-invocation | pipe-processing)"', # "pass=get->pass(arg", # "PASS:@@@hl@@@PASS@@@endhl@@@", # "pass:='ENC(Crackle123)'", # "pass:'ENC[Crackle123]'", # "pass=${REMOVE_PREFIX#prefix}", # "pass=$PASSWORD", # "pass===#{PASSWORD}", # "pass=>#{{PASSWORD}}", # "pass:test*****", # 'PASS="${*}"', # 'PASS="$123"', # 'PASS="$A1B2C3D"', # ]) def test_value_allowlist_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path=file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueAllowlistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_array_dictionary_check.py ================================================ import pytest from credsweeper.filters import ValueArrayDictionaryCheck from credsweeper.rules.rule import Rule from tests.filters.conftest import DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueArrayDictionaryCheck: @pytest.fixture def token_rule(self, config) -> Rule: token_rule_without_filters = { "name": "Password", "severity": "medium", "confidence": "moderate", "type": "keyword", "values": ["pass"], "filter_type": [ValueArrayDictionaryCheck.__name__], "use_ml": True, "min_line_len": 0, "target": ["code", "doc"], } rule = Rule(config, token_rule_without_filters) return rule def test_value_array_dictionary_p(self, token_rule: Rule, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=token_rule.patterns[0]) assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", [ "passwd = values[k+1:j]", "passwd = values[i]", "passwd = values[145]", "passwd = values[token_id]", ]) def test_value_array_dictionary_n(self, token_rule: Rule, file_path: pytest.fixture, line: str) -> None: """Evaluate that filter do remove calls to arrays and arrays declarations""" line_data = get_line_data(file_path, line=line, pattern=token_rule.patterns[0]) assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True @pytest.mark.parametrize("line", [ '{"password":[{"id":"09b51f37-8583-17ae-2a50-246c1b63150e","use":"alg","k":"XcFt0hJ4kA-1D9L37ZGu2_P"},{"kty"', "password = passwords['user1']", "password = passwords('user1')", "passwd[i] = 'root'", "users[i] = {passwd: 'root'}", "user = {passwd: 'root'}", "passwd = {'root'}", "user = get_user_data(passwd='root', user=users[i])", "user = get_user_data(user=users[i], passwd='root')", ]) def test_array_assignment_n(self, token_rule: Rule, file_path: pytest.fixture, line: str) -> None: """Evaluate that filter do not remove assignments to array or dictionary declaration""" line_data = get_line_data(file_path, line=line, pattern=token_rule.patterns[0]) assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False ================================================ FILE: tests/filters/test_value_atlassian_token_check.py ================================================ import base64 import binascii import pytest from credsweeper.common.constants import LATIN_1 from credsweeper.filters import ValueAtlassianTokenCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueAtlassianTokenCheck: @pytest.mark.parametrize("line", ["12345:«VÏel\tSpÁß¡»q¾ä×^0÷ÕJür°eÆ\r"]) def test_value_structured_token_check_p(self, file_path: pytest.fixture, line: str) -> None: encoded_line = base64.b64encode(line.encode(LATIN_1)).decode('ascii') line_data = get_line_data(file_path, line=encoded_line, pattern=LINE_VALUE_PATTERN) assert ValueAtlassianTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False bbdc_line_data = get_line_data(file_path, line=f"BBDC-{encoded_line}", pattern=LINE_VALUE_PATTERN) assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is False payload = f"ATBB{encoded_line}"[:28] crc32 = f"{binascii.crc32(payload.encode('ascii')):08x}".upper() bbdc_line_data = get_line_data(file_path, line=f"{payload}{crc32}", pattern=LINE_VALUE_PATTERN) assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["12x45:asbdsa:28yd", "12345:bsskwjdsfskjdhrebewr", "022:OrganizationInvitation6080804"]) def test_value_structured_token_check_n(self, file_path: pytest.fixture, line: str) -> None: encoded_line = base64.b64encode(line.encode('ascii')).decode('ascii') line_data = get_line_data(file_path, line=encoded_line, pattern=LINE_VALUE_PATTERN) assert ValueAtlassianTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True bbdc_line_data = get_line_data(file_path, line=f"BBDC-{encoded_line}", pattern=LINE_VALUE_PATTERN) assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is True bbdc_line_data = get_line_data(file_path, line=f"ATBB{encoded_line[:28]}012345678", pattern=LINE_VALUE_PATTERN) assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_azure_token_check.py ================================================ import unittest from credsweeper.filters import ValueAzureTokenCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueAzureTokenCheck(unittest.TestCase): def test_value_AzureToken_check_p(self): self.assertTrue(ValueAzureTokenCheck().run(get_line_data(line="eyJungle", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueAzureTokenCheck().run( get_line_data(line="eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueAzureTokenCheck().run( get_line_data(line="eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo.eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo" ".eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) def test_value_AzureToken_check_n(self): self.assertFalse(ValueAzureTokenCheck().run( get_line_data(line="eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo.eyJpc3MiOjEsImV4cCI6MiwiaWF0IjozfQo" ".1234567890qwertyuiopasdfghjklzxc", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) ================================================ FILE: tests/filters/test_value_base32_data_check.py ================================================ import pytest from credsweeper.filters import ValueBase32DataCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueBase32DataCheck: @pytest.mark.parametrize("line", ["SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU", "WXFES7QNTET5DQYC"]) def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBase32DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["PMRGSZBCHIYTEM35", "ABCDEFGHIJKLMNOP", "5555555555555555", "GAYDAMBQGAYDAMBQ"]) def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBase32DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_base64_data_check.py ================================================ import pytest from credsweeper.filters import ValueBase64DataCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueBase64DataCheck: @pytest.mark.parametrize("line", ["0DiwN2M1NTeGd6S6jU", "o9LN618aEaH32KhF7e_L"]) def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBase64DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["eyJ0eXAiOiJKV1QiLC", "2AA219GG746F88F6DDA0D852A0FD3211", "!@#$%^&*(_)0aA"]) def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBase64DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_base64_key_check.py ================================================ import re import unittest from credsweeper.credentials.line_data import LineData from credsweeper.filters import ValueBase64KeyCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET class TestValueBase64KeyCheck(unittest.TestCase): ALL_LINE_PATTERN = re.compile( r"(?P\bMII[A-Za-f][0-9A-Za-z/+]{8}(?s:[^!#$&()*\-.:;<=>?@\[\]^_{|}~]{8,8000}))") def test_value_check_n(self) -> None: line_data = LineData(config=None, path="dummy", file_type="", line="MIIXXXXX", info="", line_num=1, line_pos=0, pattern=TestValueBase64KeyCheck.ALL_LINE_PATTERN) self.assertTrue(ValueBase64KeyCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) def test_value_check_p(self) -> None: line = ("'''MIICXAIBAAKBgQDFgQqUYexFziVtw\\n\\rnEz9XaYjmGdpGVWAqL1NX41LIxRAy1tbo1hCBUppqWGfn" "\nWHwZE5k4sYt5cE6n4hcdEPj9kdrDaeF7Te9JZg1eDE9RwWColxC+5neCBCmQY2LmWJa6+HDgDKq+DJIpx8PCDb" "+i3oeOwHn00H/4T9JczK/XJzhQIDAQABAoGBALbGxu2u" "+aNYNZcv/Odi4FAqY/gprYY9hmV7DcNT6L8IO8AsMTZ87mjPShv/Z" "/Esl6M7Adzr+hyYjgWReTH3o6qMBdHyJhU28Ngsrt8EIaSYpE" "/O 2 h d p 6 l Z vSWVt/KD+HJMRIDVqj39DphuU8f0cqJkpLoP5xcetOH" " /XVnIVQXm5AkEA4gc5HjeggbJkj4bJg/ROmKlLgMKalg0LS7Z3" "\tYXIhIGJcwE27ERB5DjqMJp38Yvz8WqUchNFqF4fxSEYTWVIiMwJBAN" "\t\t\t+xiNpJtX3qWI4T5iOQM7pE8Ngx+olpOpZkwQ6jBzNyTfaZZT\"" "XpmvzvBZKWgkvxAE3BaeHjuXKlRYp7dVTXi2cCQEeKL7rvsl66nveKmueoAO \\\\" "\nRy2RH1Bkat9EBPjXOLUw7T8zVupOHey+IEB+4FHSgb" "\r\n\tmKf8EI29Vo4CGg1dGKyxwV8CQAqZ/" "\r WRrDeDz1FKXetbApNL1JXz5kWglxpMOH2A0NckoZ62CQ5u0gJXwNhFmdLJor5z" "/x6bfBhD66DrR8xOcS40CQBoGNvyzjHXUdx64Yxmtz2FXq0fYI8J8ChgNfTe6l6d1nzEQ7i0SspM45L" "/n5tgyrBBGcqzQ/WBL1C8Ny5K+RxY='''\n -----END") line_data = LineData(config=None, path="dummy", file_type="", line=line, info="", line_num=1, line_pos=0, pattern=TestValueBase64KeyCheck.ALL_LINE_PATTERN) self.assertFalse(ValueBase64KeyCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) ================================================ FILE: tests/filters/test_value_base64_part_check.py ================================================ import re import unittest from credsweeper.credentials.line_data import LineData from credsweeper.filters import ValueBase64PartCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET class TestValueBase64PartCheck(unittest.TestCase): def test_value_check_n(self) -> None: for prefix, value, suffix in [ ("fp: zza0dxVlt0/", "TijfkIXPhSdtdakk9G", "\\nCIpPqrtaOxOx0sEXzS/MuYT4rE3363cXp1yCxqF3dhUP"), ("sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/", "gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB", "/sbNop0Kszm0jsaWU4A=="), # left and right boundaries ("qcE81rS+FJHGy7KedoQ4juvg3FZ9lz4T/", "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eo", "+se0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD"), # only left ("qcE81rS+FJHGy7KedoQ4juvg3FZ9lz4T/", "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eo", ""), # only right ("", "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eo", "/qcE81rS+FJHGy7KedoQ4juvg3FZ9lz4T"), ("hj4Ov3rIwAAdHIIAC7ARR4daWuDXZoA41Bk6QJC\\nLwgikiCrNulUp0VYmrLoEE/", "sBY3YlVbQdYgS9ulYJcKyInd8hWQ31TG", "/SSyz1SRd\\ncp8SD9bAu8SbqX4DWa6tV2XxopsabwQgWqGtJWzYIyuVFvdSuXGaZ"), ("aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ+/", "4pR32luBFTAtWgUcCv56", "/p5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKi"), ("04MjE2MGFkOTFhYzgiLCJlbmMiOiJBMTlwIj+", "GgzlFDwPikM5vUkIT2WOtQxKWceQ4wzV", "/p9Y0jfEpUq6XHZIlai1oYHbDtx2Nc1k3z7"), ("GuBdjqFPQXaaOcxuJ5oLRDC7IxtkpNz1P9CByI/", "eEZQFtJDUtShrP0tTC", "\\nztg1zgkXhaz7IMxm4SgeuOUFy4mEcAGjQxs7qays"), ("sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/", "gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB", "/sbNop0Kszm0jsaWU4A=="), ("sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/", "gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB", "/sbNop0Kszm0jsaWU4A=="), ("FklyR1uZ/", "wPJjj611cdBcztlPdqoxssQGnh85BzCj", "/u3WqBpE2vjvyyvyI5kX6zk7S0ljKtt2jny2+00VsBerQ=="), ("sha512-h7fJ/", "5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ", "/Bib/KVPmanaCtOhA=="), ]: line = ''.join([prefix, value, suffix]) line_data = LineData(config=None, path="dummy", file_type="", line=line, info="", line_num=1, line_pos=0, pattern=re.compile(fr"(?P{value})")) self.assertTrue(ValueBase64PartCheck().run(line_data, DUMMY_ANALYSIS_TARGET), line) def test_value_check_p(self) -> None: for prefix, value, suffix in [ (" http://localhost:8888/v1/api/get?token=", "zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Geline80", ""), ("http://example.com/api/v3/", "T1029384756B102984756", ""), # part of jwt ("04MjE2MGFkOTFhYzgiLCJlbmMiOiJBMTlwIj.", "GgzlFDwPikM5vUkIT2WOtQxKWceQ4wzV", ".p9Y0jfEpUq6XHZIlai1oYHbDtx2Nc1k3z7"), ("https://yourInstance.salesforce.com/services/Soap/m/{version}/", "00Dx0000006Y0xy", "") ]: line = ''.join([prefix, value, suffix]) line_data = LineData(config=None, path="dummy", file_type="", line=line, info="", line_num=1, line_pos=0, pattern=re.compile(fr"(?P{value})")) self.assertFalse(ValueBase64PartCheck().run(line_data, DUMMY_ANALYSIS_TARGET), line) ================================================ FILE: tests/filters/test_value_basic_auth_check.py ================================================ import re import unittest from credsweeper.credentials.line_data import LineData from credsweeper.filters.value_basic_auth_check import ValueBasicAuthCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET class TestValueBasicAuthCheck(unittest.TestCase): def test_value_check_n(self) -> None: for value in [ "VGhlVXNlcjtUaGVQYXM1dzByZA==", # "Programming_Language", # "OjEyMzQ1Njc4", # "MTIzNDU6Njc4", # ]: line_data = LineData(config=None, path="dummy", file_type="", line=value, info="", line_num=1, line_pos=0, pattern=re.compile(fr"(?P{value})")) self.assertTrue(ValueBasicAuthCheck().run(line_data, DUMMY_ANALYSIS_TARGET), value) def test_value_check_p(self) -> None: for value in [ "MToxMjM0NTY3", # "VGhlVXNlcjpUaGVQYXM1dzByZA==", # ]: line_data = LineData(config=None, path="dummy", file_type="", line=value, info="", line_num=1, line_pos=0, pattern=re.compile(fr"(?P{value})")) self.assertFalse(ValueBasicAuthCheck().run(line_data, DUMMY_ANALYSIS_TARGET), value) ================================================ FILE: tests/filters/test_value_blocklist_check.py ================================================ import pytest from credsweeper.filters import ValueBlocklistCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueBlocklistCheck: def test_value_blocklist_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN) assert ValueBlocklistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["string12", "uuid5"]) def test_value_blocklist_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBlocklistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_camel_case_check.py ================================================ import pytest from credsweeper.filters import ValueCamelCaseCheck from tests.filters.conftest import KEYWORD_PASSWORD_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueCamelCaseCheck: def test_value_camelcase_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueCamelCaseCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["password = CamelCase", "password = camelCase"]) def test_value_camelcase_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueCamelCaseCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_dictionary_keyword_check.py ================================================ import pytest from credsweeper.filters import ValueDictionaryKeywordCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueDictionaryKeywordCheck: def test_value_dictionary_keyword_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN) assert ValueDictionaryKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["abstract123"]) def test_value_dictionary_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueDictionaryKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_entropy_base32_check.py ================================================ import sys import pytest from credsweeper.filters import ValueEntropyBase32Check from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueEntropyBase32Check: @pytest.mark.parametrize("line", ["WXFES7QNTET5DQYC"]) def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["200X300X4000X123"]) def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True @pytest.mark.parametrize(("size", "entropy", "deviation"), [ (16, 3.553197207016156, 0.20104579535116426), (32, 4.175560617601108, 0.15800526502749024), (33, 4.1969606087810565, 0.15484387204591749), (sys.maxsize, 4.04, 0), ]) def test_get_min_data_entropy_p(self, size: int, entropy: float, deviation: float) -> None: min_entropy = ValueEntropyBase32Check.get_min_data_entropy(size) diff = abs(min_entropy - (entropy - deviation)) max_diff = deviation / 4 assert 0 <= diff assert diff <= max_diff @pytest.mark.parametrize("size", [0, 1, -1, -sys.maxsize]) def test_get_min_data_entropy_n(self, size: int) -> None: assert 0 == ValueEntropyBase32Check.get_min_data_entropy(size) == 0 ================================================ FILE: tests/filters/test_value_entropy_base36_check.py ================================================ import sys import pytest from credsweeper.filters import ValueEntropyBase36Check from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueEntropyBase36Check: @pytest.mark.parametrize("line", ["2wp3v1jq9x1wa87n0bn5n46e", "snck3id95hab1jfnvlp109fs8"]) def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["testtesttest", "noncenoncenoncenoncenonce"]) def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True @pytest.mark.parametrize(("size", "entropy", "deviation"), [ (15, 3.374, 0.0), (16, 3.593320328115991, 0.19663735985864308), (24, 4.0019667180259315, 0.1767051932594335), (25, 4.039642026714182, 0.1731145889575481), (sys.maxsize, 3.9, 0), ]) def test_get_min_data_entropy_p(self, size: int, entropy: float, deviation: float) -> None: min_entropy = ValueEntropyBase36Check.get_min_data_entropy(size) diff = abs(min_entropy - (entropy - deviation)) max_diff = deviation / 4 assert 0 <= diff assert diff <= max_diff @pytest.mark.parametrize("size", [0, 1, -1, -sys.maxsize]) def test_get_min_data_entropy_n(self, size: int) -> None: assert 0 == ValueEntropyBase36Check.get_min_data_entropy(size) == 0 ================================================ FILE: tests/filters/test_value_entropy_base64_check.py ================================================ import sys import pytest from credsweeper.filters import ValueEntropyBase64Check from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueEntropyBase64Check: @pytest.mark.parametrize("line", ["0wz92+C275sfJHb2r5tS5o/u9y862lR4"]) def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["D6018D91B502C475E8FC27D5F05387558A002B9283DA7E252896950917476ECE"]) def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True @pytest.mark.parametrize(("size", "entropy", "deviation"), [ (12, 3.402832674668131, 0.16390772966021167), (18, 3.901894088228036, 0.1507035617252249), (20, 4.027133655487158, 0.14789802297157817), (25, 4.2799509786429715, 0.1469939952270194), (35, 4.636189424519627, 0.1325272934890342), (45, 4.877311178212475, 0.11797362443045391), (65, 5.183120734812424, 0.10823342697093974), (80, 5.329761693425697, 0.09159231726044716), (100, 5.4658131564512376, 0.08210420023521858), (256, 5.77, 0.02), (512, 5.89, 0.015), (1024, 5.94, 0.003), (sys.maxsize, 6.0, 0.0000000000000001), ]) def test_get_min_data_entropy_p(self, size: int, entropy: float, deviation: float) -> None: min_entropy = ValueEntropyBase64Check.get_min_data_entropy(size) diff = abs(min_entropy - (entropy - deviation)) max_diff = deviation / 4 assert 0 <= diff assert diff <= max_diff @pytest.mark.parametrize("size", [0, 1, -1, -sys.maxsize]) def test_get_min_data_entropy_n(self, size: int) -> None: assert 0 == ValueEntropyBase64Check.get_min_data_entropy(size) == 0 ================================================ FILE: tests/filters/test_value_file_path_check.py ================================================ import pytest from credsweeper.filters import ValueFilePathCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueFilePathCheck: @pytest.mark.parametrize("line", [ "/u5r/d3v/f1le", "5//0KCPafDhZvtCwqrsyiKFeDGT_0ZGHiI-E0ClIWrLC7tZ1WE5vHc4-Y2qi1IhPy3Pz5fmCe9OPIxEZUONUg7SWJF9nwQ_j2lIdXU0", "SDF;4s]dDe" ]) def test_value_file_path_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize( "line", [ "[DEPOT]/${path}/$(date)/config/credentials", # "/mnt/x", # "/srv/x", # "/var/lib/", # path "~/.ssh/id_rsa", # path "../key", # path "../../log", # path "/home/user/.ssh/id_rsa", # path "../.ssh/id_rsa", # path "crackle/filepath.txt", "/home/user/tmp", # simple path "file:///Crackle/filepath/", # path from browser url "~/.custompass", # path with synonym "./sshpass.sh", # path with synonym "crackle/file.path", # "C:\\Crackle\\filepath", # ]) def test_value_file_path_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_github_check.py ================================================ import pytest from credsweeper.filters import ValueGitHubCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueGitHubCheck: @pytest.mark.parametrize("line", ["gh?_00000000000000000000000000000004WZ4EQ", "npm_00000000000000000000000000000004WZ4EQ"]) def test_value_github_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueGitHubCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["hhh_00000000000000000000000000000004WZ4EQ", "npm_00000000000000000000000000000004WZAEQ"]) def test_value_github_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueGitHubCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_grafana_check.py ================================================ import base64 import pytest from credsweeper.filters import ValueGrafanaCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueGrafanaCheck: @pytest.mark.parametrize("line", ['{"o":"O","n":"N","k":"K","m":{"r":"0"}}']) def test_value_grafana_token_p(self, file_path: pytest.fixture, line: str) -> None: payload = base64.b64encode(line.encode('ascii')).decode('ascii') line_data = get_line_data(file_path, line=f"glc_{payload}", pattern=LINE_VALUE_PATTERN) assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ['{"k":"K","n":"N","id":1}']) def test_value_grafana_key_p(self, file_path: pytest.fixture, line: str) -> None: payload = base64.b64encode(line.encode('ascii')).decode('ascii') line_data = get_line_data(file_path, line=f"{payload}", pattern=LINE_VALUE_PATTERN) assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ['{"K":"K","n":"N","id":1}', '{"0":"O","W":"N","Y":"K","X":{"r":"0"}}']) def test_value_grafana_n(self, file_path: pytest.fixture, line: str) -> None: payload = base64.b64encode(line.encode('ascii')).decode('ascii') line_data = get_line_data(file_path, line=f"{payload}", pattern=LINE_VALUE_PATTERN) assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True line_data = get_line_data(file_path, line=f"glc_{payload}", pattern=LINE_VALUE_PATTERN) assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_grafana_service_check.py ================================================ import pytest from credsweeper.filters import ValueGrafanaServiceCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueGrafanaServiceCheck: @pytest.mark.parametrize("line", ["glsa_DuMmY-T0K3N-f0R-tHe-Te5t-CRC32Ok_770c8cda"]) def test_value_sgrafana_service_check_p(self, file_path: pytest.fixture, line: str) -> None: glsa_line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueGrafanaServiceCheck().run(glsa_line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["glpl_DuMmY-T0K3N-f0R-tHe-Te5t-CRC32Ok_770c8CdA"]) def test_value_sgrafana_service_check_n(self, file_path: pytest.fixture, line: str) -> None: glsa_line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueGrafanaServiceCheck().run(glsa_line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_hex_number_check.py ================================================ import pytest from credsweeper.filters import ValueHexNumberCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueHexNumberCheck: @pytest.mark.parametrize("line", ["0xabcdI234", "0xabcd0987654321371"]) def test_value_number_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueHexNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["0xaBcd1234", "0xAbCd098765432137"]) def test_value_number_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueHexNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_json_web_key_check.py ================================================ import base64 import unittest from credsweeper.filters.value_json_web_key_check import ValueJsonWebKeyCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueJsonWebKeyCheck(unittest.TestCase): def test_value_jwk_check_n(self): self.assertTrue(ValueJsonWebKeyCheck().run(get_line_data(line=".", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebKeyCheck().run(get_line_data(line="eyJungle", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebKeyCheck().run( get_line_data(line="eyJ1234567890qwertyu#@$^$^&iopasdfghjklzxc", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebKeyCheck().run( get_line_data(line=base64.b64encode(b'{"kty": "oct","x": "WrMwQfoNaHTgXU5fZvRGAD"}').decode(), pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) def test_value_jwt_check_p(self): self.assertFalse(ValueJsonWebKeyCheck().run( get_line_data(line=base64.b64encode(b'{"kty": "oct","k": "WrMwQfoNaHTgXU5fZvRGAD"}').decode(), pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) ================================================ FILE: tests/filters/test_value_json_web_token_check.py ================================================ import unittest from credsweeper.filters import ValueJsonWebTokenCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueJsonWebTokenCheck(unittest.TestCase): def test_value_jwt_check_p(self): self.assertTrue(ValueJsonWebTokenCheck().run(get_line_data(line=".", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebTokenCheck().run(get_line_data(line="eyJungle", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebTokenCheck().run( get_line_data(line="1234567890qwertyuiopasdfghjklzxc", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebTokenCheck().run( get_line_data(line="eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.eyJleHAiOjY1NTM2fQo", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebTokenCheck().run( get_line_data(line="eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.AAAAAAAAAAAAAAAAAAAAAAA", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertTrue(ValueJsonWebTokenCheck().run( get_line_data(line="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.x3.GFsFyGiCUIP5VHI9CEJL9thWsGjSZf1fJfarNk-LGTM", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) def test_value_jwt_check_n(self): self.assertFalse(ValueJsonWebTokenCheck().run( get_line_data(line="eyJhbGciOiJQUzM4NCJ9.eyJkdW1teSI6bnVsbH0.eyJpc3MiOiJqb2UifQ." \ "_VP9ZxcPkOptWScOUMXriLH31bTcrg0YhlYL-A7TTHLX7LTDKjggtVq3Nmdl4GIS" \ "gJdM7GHHZOJHckUjgD-T3X6oHQanKqjpWjU-GxcnOkM86e0joZgJUL7CpHUt7e3W" \ "MhbUrOCyCFRrxOXtuTvGr2m_LdS7I5OyZ4xEP4JRcsOgOnGq-MEWmLqrRvc4zy5m" \ "pM6tJwJXI8fr1tF4pcAZxXR17ITCrocVSRC6NuWOVzh_XyyEVRUfqlDbJnU2Z_I0" \ "dfEQIcC6K5hAgQGSZQC_pQDA51RUoUHa9KfNskerI681fJ8mbjIlbf68CFdXZnjE" \ "zobUhMn5Z544PF9DjW1BVtsQgXtHlSDFxl6MIMVdvM8oLRbrjlf6BYCRnCxuTA_y" \ "Ui1o9ndy7ckISHQVhuYFKu78l7nqC4heghK_Gw4h7EB7s8eEuUC-D6JjVtX10IyS" \ "vCRkRo7f8dWQTjFLs7mlPowjRz0cP5J-MmCoegKHYagOHZ_ArXOR91_u8jMdwmOf", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) self.assertFalse(ValueJsonWebTokenCheck().run( get_line_data(line="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." \ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." \ ".e30.GFsFyGiCUIP5VHI9CEJL9thWsGjSZf1fJfarNk-LGTM", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) ================================================ FILE: tests/filters/test_value_last_word_check.py ================================================ import pytest from credsweeper.filters import ValueLastWordCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN from tests.test_utils.dummy_line_data import get_line_data class TestValueLastWordCheck: def test_value_last_word_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueLastWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["password = value:"]) def test_value_last_word_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueLastWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_length_check.py ================================================ import pytest from credsweeper.filters import ValueLengthCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueLengthCheck: def test_value_length_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN) assert ValueLengthCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["Cra", "CrackleCrackleCrackleCrackleCrackleCrackle123"]) def test_value_length_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueLengthCheck(max_len=42).run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_method_check.py ================================================ import pytest from credsweeper.filters import ValueMethodCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN from tests.test_utils.dummy_line_data import get_line_data class TestValueMethodCheck: def test_value_method_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueMethodCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["pass=Crac.method()", "pass=Crac_function"]) def test_value_method_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueMethodCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_morphemes_check.py ================================================ import math import unittest from unittest.mock import MagicMock import pytest from credsweeper.config.config import Config from credsweeper.filters import ValueMorphemesCheck from tests import AZ_STRING from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueMorphemesCheck(unittest.TestCase): def setUp(self) -> None: self.config = MagicMock(spec=Config) def test_min_patter_len_n(self) -> None: with self.assertRaises(ValueError): ValueMorphemesCheck(self.config, -1) def test_init_n(self) -> None: test_filter = ValueMorphemesCheck(self.config) self.assertListEqual([1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8], test_filter.thresholds) def test_init_p(self) -> None: test_filter = ValueMorphemesCheck(self.config, 7) self.assertListEqual([7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], test_filter.thresholds) def test_run_small_n(self) -> None: line_data = get_line_data(self.config, file_path="file_path", line='*', pattern=LINE_VALUE_PATTERN) self.assertFalse(ValueMorphemesCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) def test_run_oversize_n(self) -> None: line_data = get_line_data(self.config, file_path="file_path", line='*', pattern=LINE_VALUE_PATTERN) line_data.value = '*' * (2**16) value_morpheme_check = ValueMorphemesCheck() self.assertGreater(len(line_data.value).bit_length(), len(value_morpheme_check.thresholds)) self.assertFalse(value_morpheme_check.run(line_data, DUMMY_ANALYSIS_TARGET)) def test_run_true_p(self) -> None: line_data = get_line_data(self.config, file_path="file_path", line='tizen', pattern=LINE_VALUE_PATTERN) self.assertTrue(ValueMorphemesCheck(None, 0).run(line_data, DUMMY_ANALYSIS_TARGET)) def test_run_false_p(self) -> None: line_data = get_line_data(self.config, file_path="file_path", line='tizen', pattern=LINE_VALUE_PATTERN) self.assertFalse(ValueMorphemesCheck(None, 1).run(line_data, DUMMY_ANALYSIS_TARGET)) class TestValueMorphemesCheckFixture: @pytest.mark.parametrize( "line", [ "the 0ne l1ne", "ani dammi lwnes", "burito", "31415926535897932384626433832795", # first 32 symbols from https://oeis.org/A000796 "27182818284590452353602874713526", # first 32 symbols from https://oeis.org/A001113 ]) def test_value_couple_keyword_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueMorphemesCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize( "line", [ "deadbeefdeadbeefdeadbeefdeadbeef", str(math.pi), str(math.e), "3141592653589793238462643383279", # first 31 symbols from https://oeis.org/A000796 "2718281828459045235360287471352", # first 31 symbols from https://oeis.org/A001113 "crack", "example", "motorcyclingend", "mulicrashprocid", "rgb195DiscretVideo", "GetSet", "GetDummyValue", "SetAnyString", "handleDeleteFriend", "acknowledgments", "somethingelse", ]) def test_value_couple_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueMorphemesCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True @pytest.mark.parametrize("line", [AZ_STRING]) def test_value_couple_keyword_check_arg_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueMorphemesCheck(threshold=9).run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", [AZ_STRING]) def test_value_couple_keyword_check_arg_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueMorphemesCheck(threshold=8).run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_not_allowed_pattern.py ================================================ import pytest from credsweeper.filters import ValueNotAllowedPatternCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET, LINE_VALUE_PATTERN, KEYWORD_PASSWORD_PATTERN from tests.test_utils.dummy_line_data import get_line_data class TestValueLastWordCheck: def test_value_last_word_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueNotAllowedPatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["[{ ", "\\n", "\t\t\t\\", "\t \\n\t \t"]) def test_value_last_word_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueNotAllowedPatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_not_part_encoded.py ================================================ import pytest from credsweeper.common.constants import Chars from credsweeper.credentials.line_data import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import ValueNotPartEncodedCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR class TestValueNotPartEncodedCheck: def test_value_not_part_encoded_p(self, config: pytest.fixture) -> None: val = 'Q' * 64 target = AnalysisTarget(0, [val, '/usr/local/host/'], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, val, 0, 1, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is False target = AnalysisTarget(0, ["AAA", "BBB"], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, "XXX", 0, 1, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is False def test_value_not_part_encoded_n(self, config: pytest.fixture) -> None: val = 'Q' * 64 target = AnalysisTarget(0, [val, '/etc/localhost=='], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, val, 0, 1, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True val = 'Q' * 64 target = AnalysisTarget(0, [val, '0123456789ABCDEF'], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, val, 0, 1, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True val = "/123" + 'Q' * 64 target = AnalysisTarget(0, [val, '/123456789ABCDE='], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, val, 0, 1, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True target = AnalysisTarget(1, ['Q' * 64, val, "1234"], [1, 2, 3], DUMMY_DESCRIPTOR) line_data = LineData(config, val, 1, 2, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True target = AnalysisTarget(1, [Chars.BASE64STD_CHARS.value, "XXX"], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, "XXX", 1, 2, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True target = AnalysisTarget(0, ["XXX", Chars.BASE64STD_CHARS.value], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, "XXX", 0, 1, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True target = AnalysisTarget(1, [Chars.BASE64STD_CHARS.value, "XXX"], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, "XXX", 1, 333, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True ================================================ FILE: tests/filters/test_value_number_check.py ================================================ import pytest from credsweeper.filters import ValueNumberCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueNumberCheck: @pytest.mark.parametrize("line", ["0123423423x", "abcdefg", "0123456789abcdef012345"]) def test_value_number_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", [ "0123456789abcdef01234", "0123456789abcdef0123U", "0x0123456789abcdefULL", "555", "314ULL", "0xabcdefU", "0xfL", "010101010101", "-201760", "-1ULL" ]) def test_value_number_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_pattern_check.py ================================================ import unittest from unittest.mock import MagicMock import pytest from credsweeper.common.constants import DEFAULT_PATTERN_LEN from credsweeper.config.config import Config from credsweeper.filters import ValuePatternCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValuePatternCheck(unittest.TestCase): def setUp(self) -> None: self.config = MagicMock(spec=Config) def test_min_patter_len_n(self) -> None: with self.assertRaises(ValueError): ValuePatternCheck(self.config, DEFAULT_PATTERN_LEN - 1) def test_init_n(self) -> None: test_filter = ValuePatternCheck(self.config) self.assertEqual(-1, test_filter.pattern_len) self.assertListEqual([4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], test_filter.pattern_lengths) def test_init_p(self) -> None: test_filter = ValuePatternCheck(self.config, DEFAULT_PATTERN_LEN) self.assertEqual(DEFAULT_PATTERN_LEN, test_filter.pattern_len) self.assertListEqual([4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], test_filter.pattern_lengths) def test_duple_pattern_check_n(self) -> None: self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check("20201030", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check("01000101", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check("10305070", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check("11224433", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check("11000000", DEFAULT_PATTERN_LEN)) def test_duple_pattern_check_p(self) -> None: self.assertTrue(ValuePatternCheck(self.config).duple_pattern_check("11223344", DEFAULT_PATTERN_LEN)) self.assertTrue(ValuePatternCheck(self.config).duple_pattern_check("010101010", DEFAULT_PATTERN_LEN)) self.assertTrue(ValuePatternCheck(self.config).duple_pattern_check("40302010", DEFAULT_PATTERN_LEN)) def test_equal_pattern_check_n(self) -> None: self.assertFalse(ValuePatternCheck(self.config).equal_pattern_check("Crackle123", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(self.config).equal_pattern_check("IEEE32441", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(self.config).equal_pattern_check("Pass...", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(pattern_len=4).equal_pattern_check("Pass:\\n Crackle123", 5)) def test_equal_pattern_check_p(self) -> None: self.assertTrue(ValuePatternCheck(self.config).equal_pattern_check("AAAABCD", DEFAULT_PATTERN_LEN)) self.assertTrue(ValuePatternCheck(pattern_len=4).equal_pattern_check("-------BEGIN", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(pattern_len=8).equal_pattern_check("-------BEGIN", DEFAULT_PATTERN_LEN)) def test_ascending_pattern_check_n(self) -> None: self.assertFalse(ValuePatternCheck(self.config).ascending_pattern_check("Crackle123", DEFAULT_PATTERN_LEN)) self.assertFalse( ValuePatternCheck(pattern_len=4).ascending_pattern_check("Crackle987654321", DEFAULT_PATTERN_LEN)) def test_ascending_pattern_check_p(self) -> None: self.assertTrue(ValuePatternCheck(self.config).ascending_pattern_check("Crackle1234", DEFAULT_PATTERN_LEN)) self.assertTrue(ValuePatternCheck(pattern_len=4).ascending_pattern_check("Cracklefgh", DEFAULT_PATTERN_LEN)) def test_descending_pattern_check_n(self) -> None: self.assertFalse(ValuePatternCheck(self.config).descending_pattern_check("Crackle321", DEFAULT_PATTERN_LEN)) self.assertFalse(ValuePatternCheck(pattern_len=4).descending_pattern_check("Crackle123456789", 5)) def test_descending_pattern_check_p(self) -> None: self.assertTrue(ValuePatternCheck(self.config).descending_pattern_check("Crackle4321", DEFAULT_PATTERN_LEN)) self.assertTrue(ValuePatternCheck(pattern_len=4).descending_pattern_check("Crackledcba", DEFAULT_PATTERN_LEN)) class TestValuePatternCheckFixture: def test_value_similarity_check_p(self, file_path: pytest.fixture, config: Config, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN) assert ValuePatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", [ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526", "c0ffeecc-dead-beef-cafe-1a2b3c4d5e6f", "123456ff-dead-beef-cafe-7a24ca6a903c", "ffffff00-dead-beef-cafe-4a25c06a902d", "Crackle4444", "Crackle1234", "Crackle4321", "@$%", "a5", "_" ]) def test_value_similarity_check_n(self, file_path: pytest.fixture, config: Config, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValuePatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_sealed_secret_check.py ================================================ import re import unittest from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import ValueSealedSecretCheck from tests import AZ_STRING from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueSealedSecretCheck(unittest.TestCase): def test_value_search_check_n(self): line_data = get_line_data(line=AZ_STRING, pattern=LINE_VALUE_PATTERN) self.assertFalse(ValueSealedSecretCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) line_data = get_line_data(line="AQA", pattern=LINE_VALUE_PATTERN) self.assertFalse(ValueSealedSecretCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) line_data = get_line_data(line=f"AgA{'A' * MAX_LINE_LENGTH}", pattern=LINE_VALUE_PATTERN) self.assertFalse(ValueSealedSecretCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) def test_value_search_check_p(self): line = f"AgA{'A' * 1000}\nbitnami\nSealedSecret\nencryptedData\n" line_data = get_line_data(line=line, pattern=re.compile(r"(?P\S+)")) target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=None) self.assertTrue(ValueSealedSecretCheck().run(line_data, target)) ================================================ FILE: tests/filters/test_value_search_check.py ================================================ import re import unittest from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.filters import ValueSearchCheck from tests import AZ_STRING from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueSearchCheck(unittest.TestCase): def test_value_search_check_n(self): line_data = get_line_data(line=AZ_STRING, pattern=LINE_VALUE_PATTERN) # None in constructor returns False always self.assertFalse(ValueSearchCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) # empty pattern - too self.assertFalse(ValueSearchCheck(pattern='').run(line_data, DUMMY_ANALYSIS_TARGET)) # smallest pattern does not exist in value self.assertFalse(ValueSearchCheck(pattern="zyzzyva").run(line_data, DUMMY_ANALYSIS_TARGET)) # smallest value does not exist in pattern self.assertFalse(ValueSearchCheck(pattern='_' * MAX_LINE_LENGTH).run(line_data, DUMMY_ANALYSIS_TARGET)) def test_value_search_check_p(self): line_data = get_line_data(line=AZ_STRING, pattern=LINE_VALUE_PATTERN) # a word in value self.assertTrue(ValueSearchCheck(pattern="lazy").run(line_data, DUMMY_ANALYSIS_TARGET)) line_data = get_line_data(line=AZ_STRING, pattern=re.compile(r"(?Plazy)")) # a word in value self.assertTrue(ValueSearchCheck(pattern="over lazy dog").run(line_data, DUMMY_ANALYSIS_TARGET)) ================================================ FILE: tests/filters/test_value_similarity_check.py ================================================ import pytest from credsweeper.filters import ValueSimilarityCheck from credsweeper.rules.rule import Rule from tests.filters.conftest import DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueSimilarityCheck: @pytest.fixture def password_rule(self, config) -> Rule: pass_rule_without_filters = { "name": "Password", "severity": "medium", "confidence": "moderate", "type": "keyword", "values": ["password|passwd|pwd"], "use_ml": True, "min_line_len": 0, "target": ["code", "doc"], } rule = Rule(config, pass_rule_without_filters) return rule def test_value_similarity_check_p(self, password_rule: Rule, file_path: str, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path=file_path, line=success_line, pattern=password_rule.patterns[0]) assert ValueSimilarityCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize( "line", ["password = 'password1'", "password = 'password123'", "pwd=$PWD", '"password": "password=`$vc1rQ5eBW*S`"']) def test_value_similarity_check_n(self, password_rule: Rule, file_path: str, line: str) -> None: line_data = get_line_data(file_path=file_path, line=line, pattern=password_rule.patterns[0]) assert ValueSimilarityCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_split_keyword_check.py ================================================ import pytest from credsweeper.filters import ValueSplitKeywordCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueSplitKeywordCheck: @pytest.mark.parametrize("line", ["abstract,and_so_on", "ani dammi lwnes", "unique#string"]) def test_value_split_keyword_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueSplitKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["abstract and so on", "Any dummy lines", "unique string"]) def test_value_split_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueSplitKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_string_type_check.py ================================================ import pytest from credsweeper.config.config import Config from credsweeper.filters import ValueStringTypeCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN from tests.test_utils.dummy_line_data import get_line_data class TestValueStringTypeCheck: def test_value_string_type_check_p(self, config: Config, success_line: pytest.fixture) -> None: file_path = "path.txt" line_data = get_line_data(config, file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["pass = DEAD314BEEF0CAFE"]) def test_value_string_type_check_n(self, config: Config, line: str) -> None: file_path = "path.py" line_data = get_line_data(config, file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True def test_value_string_type_check_none_path_n(self, config: Config, success_line: pytest.fixture) -> None: # even file_path is None it means "" - no extension file_path = None line_data = get_line_data(config, file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["pass = 314DEADBEEF0CAFE"]) def test_value_string_type_check_not_quoted_source_file_n(self, line: str, config: Config) -> None: file_path = "path.py" # guess, the keyword is TOKEN line_data = get_line_data(config, file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False ================================================ FILE: tests/filters/test_value_token_base32_check.py ================================================ import pytest from credsweeper.filters import ValueTokenBase32Check from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueTokenBase32Check: @pytest.mark.parametrize("line", ["4K26IPW7VBHMFT4D", "NAQ4BVWT", "WXFES7QNTET5DQYC"]) def test_value_token_base32_check_p(self, line: str) -> None: # import string;import random;print(''.join(random.choices(string.ascii_uppercase+'234567', k=16))) line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["OOOOOOMMMMMMMMMM", "1MZ0A9L2", "QAZXSWEDCVFRTGBN"]) def test_value_token_base32_check_n(self, line: str) -> None: line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_token_base36_check.py ================================================ import pytest from credsweeper.filters import ValueTokenBase36Check from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueTokenBase36Check: @pytest.mark.parametrize( "line", [ "jvzec4y51fkrrd39czz1nfbw", # 24 "nf6lqy74gp53f7w08gn4l0vrk", # 25 "wpv1jq9xwanbn3n", # 15 "123456789", # 9 - not calculated ]) def test_value_token_base36_check_p(self, line: str) -> None: # import string;import random;print(''.join(random.choices(string.digits+string.ascii_lowercase, k=15))) line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize( "line", [ "100x200x300x400", # 15 "qwertyui", # 8 "0o9i8u7y6t5r4e3", # 15 "0k9j8h7g6f5d4s3a", # 16 "gfkjjhgy7r457y54jfhhgvcnf", # 25 ]) def test_value_token_base36_check_n(self, line: str) -> None: line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_token_base64_check.py ================================================ import pytest from credsweeper.filters import ValueTokenBase64Check from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data class TestValueTokenBase64Check: @pytest.mark.parametrize( "line", [ "oXIO7p2R4Sx5UcHmUacu0-ojM8ELvCeskmyPuu4yaexoh5ExL4AFOWWI08G-IBVZ", # 64 "9BlYTo-Fcthl_75PKfKQIWlYA6alA2uy", # 32 "23OY2aMY4U3ubsQwBPvdyfYr", # 24 "wSpv1jq9xwaXbn3n", # 16 ]) def test_value_token_base64_check_p(self, line: str) -> None: # import string;import random;print(''.join(random.choices(string.digits+string.ascii_letters+'-_', k=64))) line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize( "line", [ "0oKiLoKkjUIhbYygVfcrTt6Dree3dSsBnJjiJKklLpMbV71X1QaSwDe23-9O_o01", # 64 "09uulkjhbmnbvft565d4ddxvcvswq232", # 32 "21WEasdVCfGGyrY6Ui8LkLpO", # 24 "100x200x3S00x400", # 16 ]) def test_value_token_base64_check_n(self, line: str) -> None: line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/filters/test_value_token_check.py ================================================ import pytest from credsweeper.filters import ValueTokenCheck from tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN from tests.test_utils.dummy_line_data import get_line_data class TestValueTokenCheck: def test_value_token_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", ["pass=Crac>crackle1", "pass=my None: line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN) assert ValueTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True ================================================ FILE: tests/ml_model/__init__.py ================================================ ================================================ FILE: tests/ml_model/test_features.py ================================================ import re from unittest import TestCase from credsweeper.app import APP_PATH from credsweeper.common.constants import Severity, MAX_LINE_LENGTH from credsweeper.credentials.candidate import Candidate, LineData from credsweeper.ml_model.features.entropy_evaluation import EntropyEvaluation from credsweeper.ml_model.features.file_extension import FileExtension from credsweeper.ml_model.features.has_html_tag import HasHtmlTag from credsweeper.ml_model.features.is_secret_numeric import IsSecretNumeric from credsweeper.ml_model.features.length_of_attribute import LengthOfAttribute from credsweeper.ml_model.features.morpheme_dense import MorphemeDense from credsweeper.ml_model.features.rule_name import RuleName from credsweeper.ml_model.features.rule_severity import RuleSeverity from credsweeper.ml_model.features.search_in_attribute import SearchInAttribute from credsweeper.ml_model.features.word_in_path import WordInPath from credsweeper.ml_model.features.word_in_postamble import WordInPostamble from credsweeper.ml_model.features.word_in_preamble import WordInPreamble from credsweeper.ml_model.features.word_in_transition import WordInTransition from credsweeper.ml_model.features.word_in_value import WordInValue from credsweeper.ml_model.features.word_in_variable import WordInVariable from credsweeper.utils.util import Util from tests import AZ_STRING RE_TEST_PATTERN = re.compile(r"quick (?Pbrown fox) jumps (?Pover) (?Pthe lazy) dog") class TestFeatures(TestCase): @staticmethod def init_feature_search_comment(comment: str) -> SearchInAttribute: feature = None model_config = Util.json_load(APP_PATH / "ml_model" / "ml_config.json") for feat in model_config["features"]: if "SearchInAttribute" == feat["type"] and comment == feat.get("comment", ''): assert feature is None, f"check duplication of '{comment}'" feature = SearchInAttribute(**feat["kwargs"]) else: assert feature is not None, f"missed SearchInAttribute for '{comment}'" return feature def setUp(self): self.maxDiff = None self.model_config = Util.json_load(APP_PATH / "ml_model" / "ml_config.json") self.line_data = LineData( config=None, line=AZ_STRING, line_pos=0, line_num=1, path="src/path.ext", # looks like after glob file_type=".ext", info="info", pattern=RE_TEST_PATTERN) self.candidate = Candidate(line_data_list=[self.line_data], patterns=[], rule_name="rule", severity=Severity.MEDIUM) def test_entropy_evaluation_n(self): feature = EntropyEvaluation() candidate = self.candidate self.line_data.value = "\0\0\0" self.assertListEqual([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], feature.extract(candidate).tolist()) def test_entropy_evaluation_p(self): feature = EntropyEvaluation() candidate = self.candidate extracted1 = feature.extract(candidate).tolist() self.assertListEqual([1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], extracted1) self.line_data.value = "bace4d19-fa7e-beef-cafe-9129474bcd81" extracted2 = feature.extract(candidate).tolist() self.assertListEqual([ 0.7041769027709961, 0.6943118572235107, 0.6783386468887329, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0 ], extracted2) def test_file_extension_n(self): self.assertListEqual([[0, 0, 0]], FileExtension([".txt", ".doc", ".exe"])([self.candidate]).tolist()) def test_file_extension_p(self): self.assertListEqual([[0, 0, 1]], FileExtension([".0", ".abc", ".ext"])([self.candidate]).tolist()) def test_length_attribute_unsupported_n(self): with self.assertRaises(Exception): LengthOfAttribute("separator") def test_length_attribute_empty_n(self): feature = LengthOfAttribute("line") candidate = self.candidate self.line_data.line = '' self.assertListEqual([0.0], feature.extract(candidate).tolist()) def test_length_attribute_oversize_n(self): feature = LengthOfAttribute("line") candidate = self.candidate self.line_data.line = ' ' * MAX_LINE_LENGTH self.assertListEqual([1.0], feature.extract(candidate).tolist()) def test_length_attribute_p(self): feature = LengthOfAttribute("value") candidate = self.candidate self.assertListEqual([0.12307692307692308], feature.extract(candidate).tolist()) def test_word_in_path_empty_n(self): self.line_data.path = "" self.assertListEqual([[0, 0, 0, 0]], WordInPath(["dog", "lazy", "small", "the"])([self.candidate]).tolist()) def test_word_in_path_n(self): self.assertListEqual([[0, 0, 0, 0]], WordInPath(["dog", "lazy", "small", "the"])([self.candidate]).tolist()) def test_word_in_path_p(self): self.assertListEqual([[1, 1, 0, 0]], WordInPath(["/src", "/path", "small", "the"])([self.candidate]).tolist()) def test_word_in_value_empty_n(self): self.line_data.value = None self.assertListEqual([[0, 0, 0, 0]], WordInValue(["aaa", "bbb", "ccc", "ddd"]).extract(self.candidate).tolist()) def test_word_in_value_n(self): self.assertListEqual([[0, 0, 0, 0]], WordInValue(["aaa", "bbb", "ccc", "ddd"]).extract(self.candidate).tolist()) def test_word_in_value_p(self): self.assertListEqual([[0, 1, 0, 1]], WordInValue(["the", "small", "lazy", "dog"]).extract(self.candidate).tolist()) def test_word_in_variable_empty_n(self): self.line_data.variable = None self.assertListEqual([[0, 0, 0, 0]], WordInVariable(["aaa", "bbb", "ccc", "ddd"]).extract(self.candidate).tolist()) def test_word_in_variable_n(self): self.assertListEqual([[0, 0, 0, 0]], WordInVariable(["aaa", "bbb", "ccc", "ddd"]).extract(self.candidate).tolist()) def test_word_in_variable_p(self): self.assertListEqual([[1, 1, 0, 0]], WordInVariable(["brown", "fox", "lazy", "the"]).extract(self.candidate).tolist()) def test_word_in_preamble_dup_n(self): with self.assertRaises(Exception): WordInPreamble(["fox", "fox"]) def test_word_in_preamble_empty_n(self): self.line_data.line = "" self.line_data.value_start = 0 test = WordInPreamble(["dummy", "text"]) self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist()) def test_word_in_preamble_n(self): test = WordInPreamble(["dummy", "text"]) self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist()) def test_word_in_preamble_p(self): test = WordInPreamble(["dog", "the"]) self.assertListEqual([[0, 1]], test.extract(self.candidate).tolist()) def test_word_in_transition_dup_n(self): with self.assertRaises(Exception): WordInTransition(["fox", "fox"]) def test_word_in_transition_empty_n(self): self.line_data.line = "" self.line_data.value_start = 0 test = WordInTransition(["dummy", "text"]) self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist()) def test_word_in_transition_n(self): test = WordInTransition(["dummy", "text"]) self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist()) def test_word_in_transition_p(self): test = WordInTransition(["fox", "jumps"]) self.assertListEqual([[0, 1]], test.extract(self.candidate).tolist()) def test_word_in_postamble_dup_n(self): with self.assertRaises(Exception): WordInPostamble(["dog", "dog"]) def test_word_in_postamble_empty_n(self): self.line_data.line = "" self.line_data.value_start = 0 test = WordInPostamble(["dummy", "text"]) self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist()) def test_word_in_postamble_n(self): test = WordInPostamble(["dummy", "text"]) self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist()) def test_word_in_postamble_p(self): test = WordInPostamble(["dog", "fox"]) self.assertListEqual([[1, 0]], test.extract(self.candidate).tolist()) def test_has_html_tag_empty_n(self): self.line_data.line = "" self.line_data.value_start = 0 test = HasHtmlTag() self.assertEqual(-1.0, test.extract(self.candidate)) def test_has_html_tag_n(self): test = HasHtmlTag() self.assertEqual(-1.0, test.extract(self.candidate)) def test_has_html_tag_p(self): test = HasHtmlTag() self.line_data.line = f"
    {self.line_data.line}" self.assertEqual(1.0, test.extract(self.candidate)) self.line_data.line = f"

    {self.line_data.line}

    " self.assertEqual(1.0, test.extract(self.candidate)) def test_is_secret_numeric_empty_n(self): self.line_data.value = "" test = IsSecretNumeric() self.assertEqual(-1.0, test.extract(self.candidate)) def test_is_secret_numeric_n(self): test = IsSecretNumeric() self.assertEqual(-1.0, test.extract(self.candidate)) def test_is_secret_numeric_p(self): test = IsSecretNumeric() self.line_data.value = "2e+64" self.assertEqual(1.0, test.extract(self.candidate)) self.line_data.value = "2.718281828" self.assertEqual(1.0, test.extract(self.candidate)) self.line_data.value = "-0.5" self.assertEqual(1.0, test.extract(self.candidate)) self.line_data.value = ".33" self.assertEqual(1.0, test.extract(self.candidate)) self.line_data.value = "+.33e-2" def test_search_in_attribute_line_empty_n(self): self.line_data.line = "" self.assertEqual(-1.0, SearchInAttribute("^the lazy dog$", "line").extract(self.candidate)) def test_search_in_attribute_variable_empty_n(self): self.line_data.variable = "" self.assertEqual(-1.0, SearchInAttribute(".*dog", "variable").extract(self.candidate)) self.line_data.variable = None self.assertEqual(-1.0, SearchInAttribute(".*dog", "variable").extract(self.candidate)) def test_search_in_attribute_value_empty_n(self): self.line_data.value = "" self.assertEqual(-1.0, SearchInAttribute("fox", "value").extract(self.candidate)) def test_search_in_attribute_n(self): self.assertEqual(-1.0, SearchInAttribute("^the lazy dog$", "line").extract(self.candidate)) self.assertEqual(-1.0, SearchInAttribute(".*dog", "variable").extract(self.candidate)) self.assertEqual(-1.0, SearchInAttribute("fox", "value").extract(self.candidate)) def test_search_in_attribute_p(self): self.assertEqual(1.0, SearchInAttribute(".*the lazy dog$", "line").extract(self.candidate)) self.assertEqual(1.0, SearchInAttribute(".*fox", "variable").extract(self.candidate)) self.assertEqual(1.0, SearchInAttribute("over", "separator").extract(self.candidate)) self.assertEqual(1.0, SearchInAttribute("^the lazy$", "value").extract(self.candidate)) def test_morpheme_dense_n(self): self.line_data.value = "5A1T" self.assertEqual(0, MorphemeDense().extract(self.candidate)) self.line_data.value = "ZaQ1@wSxCdE3$rFvbGt56yhNmJu7*ik" self.assertEqual(0, MorphemeDense().extract(self.candidate)) def test_morpheme_dense_p(self): self.assertEqual(0.875, MorphemeDense().extract(self.candidate)) self.line_data.value = "KeyApiPasswordToken" self.assertEqual(1.0, MorphemeDense().extract(self.candidate)) self.line_data.value = "salt:saltSALTsalt" self.assertEqual(0.9411764705882353, MorphemeDense().extract(self.candidate)) self.line_data.value = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef" self.assertEqual(1.0, MorphemeDense().extract(self.candidate)) def test_rule_name_n(self): self.assertListEqual([[0, 0]], RuleName(["dummy", "test"])([self.candidate]).tolist()) def test_rule_name_p(self): self.assertListEqual([[0, 1]], RuleName(["mock", "rule"])([self.candidate]).tolist()) COMMENT_STYLES = [ "camelStyle naming detection", "PascalStyle naming detection", "UPPERCASE naming detection", "lowercase naming detection", ] STYLES_MAP = { "": None, # "iii111oooXoooXoo": None, # "n0tCamlStyle23": None, # "notCam3lStyle23": None, # "NotPa5calStyle": None, # "__n0t_example_some_name_in_code_4__example": None, # "_N0T_EXAMPLE_WR0NG_": None, # "__MAIN__": None, # "___SLAVE": None, # "NOTEXAMPLE": None, # "4_EXAMPLE_NOT_VAR": None, # "PascalStyle": "PascalStyle naming detection", # "Pascal33Style": "PascalStyle naming detection", # "PascalX86Style": "PascalStyle naming detection", # "camelStyle": "camelStyle naming detection", # "testCamelStyle1": "camelStyle naming detection", # "test23Camel43Style65": "camelStyle naming detection", # "camelX86Style": "camelStyle naming detection", # "_MY_X86_DEMO_VAR": "UPPERCASE naming detection", # "_42_YOU_VAR": "UPPERCASE naming detection", # "_4_YOU_": "UPPERCASE naming detection", # "_H204__U_": "UPPERCASE naming detection", # "_AARCH64_X86_FLUCTUATOR": "UPPERCASE naming detection", # "EXAMPLE_IS_VAR": "UPPERCASE naming detection", # "EXAMPLE__VAR": "UPPERCASE naming detection", # "some_name_in_code": "lowercase naming detection", # "___some_name_in_code_4__example": "lowercase naming detection", # } def test_style_n(self): candidate = self.candidate for comment in self.COMMENT_STYLES: feature = self.init_feature_search_comment(comment) for val, typ in self.STYLES_MAP.items(): if typ is None or typ != comment: candidate.line_data_list[0].value = val self.assertEqual(-1.0, feature.extract(candidate), (comment, typ, val)) def test_style_p(self): candidate = self.candidate for comment in self.COMMENT_STYLES: feature = self.init_feature_search_comment(comment) for val, typ in self.STYLES_MAP.items(): if typ == comment: candidate.line_data_list[0].value = val self.assertEqual(1.0, feature.extract(candidate), (comment, typ, val)) def test_rule_severity_n(self): self.candidate.severity = Severity.INFO self.assertEqual(0.0, RuleSeverity().extract(self.candidate)) self.candidate.severity = None with self.assertRaises(ValueError): RuleSeverity().extract(self.candidate) def test_rule_severity_p(self): self.line_data.value = "" self.assertEqual(0.5, RuleSeverity().extract(self.candidate)) self.candidate.severity = Severity.CRITICAL self.assertEqual(1.0, RuleSeverity().extract(self.candidate)) ================================================ FILE: tests/ml_model/test_ml_validator.py ================================================ import copy import re import unittest from typing import Tuple import numpy as np from credsweeper.app import APP_PATH from credsweeper.common.constants import Severity, MAX_LINE_LENGTH, MIN_DATA_LEN, ThresholdPreset from credsweeper.config.config import Config from credsweeper.credentials.candidate import Candidate from credsweeper.credentials.candidate_key import CandidateKey from credsweeper.credentials.line_data import LineData from credsweeper.ml_model.ml_validator import MlValidator from credsweeper.utils.util import Util from tests import AZ_STRING, ML_DELTA class TestMlValidator(unittest.TestCase): def setUp(self): self.maxDiff = None self.ml_validator = MlValidator(threshold=ThresholdPreset.medium) assert self.ml_validator is not None file_name = APP_PATH / "secret" / "config.json" config_dict = Util.json_load(file_name) config_dict["use_filters"] = True config_dict["find_by_ext"] = False config_dict["pedantic"] = False config_dict["depth"] = 0 config_dict["doc"] = False config_dict["find_by_ext_list"] = [] config_dict["size_limit"] = None self.config = Config(config_dict) def validate(self, _candidate: Candidate) -> Tuple[bool, float]: """Validate single credential candidate.""" candidate_key = CandidateKey(_candidate.line_data_list[0]) sample_as_batch = [(candidate_key, [_candidate])] is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 1) return is_cred_batch[0], probability_batch[0] def test_ml_validator_simple_n(self): candidate = Candidate.get_dummy_candidate(self.config, "main.py", ".py", "info", "Password") candidate.line_data_list[0].line = 'password="Ahga%$FiQ@Ei8"' candidate.line_data_list[0].variable = "password" candidate.line_data_list[0].value_start = 16 candidate.line_data_list[0].value_end = 25 candidate.line_data_list[0].value = "Ahga%$FiQ@Ei8" decision, probability = self.validate(candidate) self.assertAlmostEqual(0.9873854517936707, probability, delta=ML_DELTA) candidate.line_data_list[0].path = "main.yaml" candidate.line_data_list[0].file_type = ".yaml" decision, probability = self.validate(candidate) self.assertAlmostEqual(0.9031195044517517, probability, delta=ML_DELTA) candidate.line_data_list[0].path = "main.zip" candidate.line_data_list[0].file_type = ".zip" decision, probability = self.validate(candidate) self.assertAlmostEqual(0.8412226438522339, probability, delta=ML_DELTA) candidate.line_data_list[0].path = "main.txt" candidate.line_data_list[0].file_type = ".txt" decision, probability = self.validate(candidate) self.assertAlmostEqual(0.8234410285949707, probability, delta=ML_DELTA) def test_ml_validator_auxiliary_p(self): candidate = Candidate.get_dummy_candidate(self.config, "mycred", "", "", "Secret") candidate.line_data_list[0].line = "secret=238475614782" candidate.line_data_list[0].variable = "secret" candidate.line_data_list[0].value_start = 7 candidate.line_data_list[0].value_end = 43 candidate.line_data_list[0].value = "238475614782" # auxiliary candidate for a pattern rule - without variable aux_candidate = copy.deepcopy(candidate) aux_candidate.line_data_list[0].variable = None # todo: the scores are low for current ML model - will be changed after train candidate_key = CandidateKey(candidate.line_data_list[0]) sample_as_batch = [(candidate_key, [candidate])] is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) self.assertAlmostEqual(0.591613233089447, probability_batch[0], delta=ML_DELTA) # auxiliary rule which was not trained - keeps the same ML probability aux_candidate.rule_name = "PASSWD_PAIR" sample_as_batch = [(candidate_key, [candidate, aux_candidate])] is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) self.assertAlmostEqual(0.591613233089447, probability_batch[0], delta=ML_DELTA) # auxiliary rule in train increases ML probability aux_candidate.rule_name = "Token" is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) self.assertAlmostEqual(0.6740559339523315, probability_batch[0], delta=ML_DELTA) # which real line may be candidate.line_data_list[0].line = "secret=func(token=238475614782)" aux_candidate.line_data_list[0].line = "secret=func(token=238475614782)" aux_candidate.line_data_list[0].variable = "token" is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) self.assertAlmostEqual(0.5733864307403564, probability_batch[0], delta=ML_DELTA) def test_ml_validator_auxiliary_n(self): candidate = Candidate.get_dummy_candidate(self.config, "secret", "", "", "Secret") candidate.line_data_list[0].line = "secret=bace4d19-dead-beef-cafe-9129474bcd81" candidate.line_data_list[0].variable = "secret" candidate.line_data_list[0].value_start = 7 candidate.line_data_list[0].value_end = 43 candidate.line_data_list[0].value = "bace4d19-dead-beef-cafe-9129474bcd81" # auxiliary candidate for a pattern rule - without variable aux_candidate = copy.deepcopy(candidate) aux_candidate.line_data_list[0].variable = None # todo: the scores are low for current ML model - will be changed after train candidate_key = CandidateKey(candidate.line_data_list[0]) sample_as_batch = [(candidate_key, [candidate])] is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) self.assertAlmostEqual(0.9984369277954102, probability_batch[0], delta=ML_DELTA) # auxiliary rule in train does not increase ML probability yet - will be used after next train aux_candidate.rule_name = "UUID" sample_as_batch = [(candidate_key, [candidate, aux_candidate])] is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) self.assertAlmostEqual(0.9984369277954102, probability_batch[0], delta=ML_DELTA) def test_extract_features_n(self): candidate1 = Candidate.get_dummy_candidate(self.config, "___.x3", ".x3", "", "") candidate1.line_data_list[0].line = '' candidate1.line_data_list[0].variable = '' candidate1.line_data_list[0].value_start = 0 candidate1.line_data_list[0].value_end = 0 candidate1.line_data_list[0].value = '' features1 = self.ml_validator.extract_features([candidate1]) self.assertEqual(20, np.count_nonzero(features1)) def test_extract_features_p(self): candidate1 = Candidate.get_dummy_candidate(self.config, "???.py", ".py", "", "???????") candidate1.line_data_list[0].line = '??????????????????????????' candidate1.line_data_list[0].variable = "???????" candidate1.line_data_list[0].value_start = 2 candidate1.line_data_list[0].value_end = 6 candidate1.line_data_list[0].value = "???????????????????" features1_0 = self.ml_validator.extract_features([candidate1]) self.assertEqual(28, np.count_nonzero(features1_0)) candidate1.rule_name = "Password" features1_1 = self.ml_validator.extract_features([candidate1]) self.assertEqual(29, np.count_nonzero(features1_1)) candidate1.line_data_list[0].value = "example/" features1_2 = self.ml_validator.extract_features([candidate1]) self.assertEqual(36, np.count_nonzero(features1_2)) candidate1.line_data_list[0].value = "undefined/" features1_3 = self.ml_validator.extract_features([candidate1]) self.assertEqual(35, np.count_nonzero(features1_3)) candidate1.line_data_list[0].value = "undefined/example" features1_4 = self.ml_validator.extract_features([candidate1]) self.assertEqual(36, np.count_nonzero(features1_4)) candidate2 = copy.deepcopy(candidate1) candidate2.rule_name = "UNKNOWN RULE" features2 = self.ml_validator.extract_features([candidate1, candidate2]) self.assertEqual(36, np.count_nonzero(features2)) candidate2.rule_name = "Secret" features3 = self.ml_validator.extract_features([candidate1, candidate2]) self.assertEqual(37, np.count_nonzero(features3)) def testVariableNotAllowedPatternCheck_n(self): candidate1 = Candidate.get_dummy_candidate(self.config, "???.py", ".py", "", "##########") candidate1.line_data_list[0].line = '?????????????:!!!!!!!!!!!!!' candidate1.line_data_list[0].variable = "?????????????" candidate1.line_data_list[0].value_start = 14 candidate1.line_data_list[0].value_end = 27 candidate1.line_data_list[0].value = "!!!!!!!!!!!!!" features1_1 = self.ml_validator.extract_features([candidate1]) self.assertEqual(27, np.count_nonzero(features1_1)) candidate1.line_data_list[0].variable = "pub_key" features1_2 = self.ml_validator.extract_features([candidate1]) self.assertEqual(27, np.count_nonzero(features1_2)) def test_extract_features_normalized_n(self): line_data = LineData(config=self.config, line=AZ_STRING, line_pos=0, line_num=1, path="path.ext", file_type="type", info="info", pattern=re.compile(r"(?P.*) (?Pover) (?P.+)")) candidate = Candidate([line_data], [], "rule", Severity.MEDIUM) features = self.ml_validator.extract_features([candidate]) self.assertLess(0, np.count_nonzero(features)) for i in features.tolist()[0]: self.assertLessEqual(-1.0, i) self.assertGreaterEqual(1.0, i) def test_encode_n(self): self.assertEqual(0, np.count_nonzero(self.ml_validator.encode(None, 0))) self.assertEqual(0, np.count_nonzero(self.ml_validator.encode("", 10))) self.assertEqual(0, np.count_nonzero(self.ml_validator.encode("AAA", 0))) def test_encode_p(self): self.assertEqual(MIN_DATA_LEN, np.count_nonzero(self.ml_validator.encode(AZ_STRING, MIN_DATA_LEN))) self.assertEqual(len(AZ_STRING), np.count_nonzero(self.ml_validator.encode(AZ_STRING, MAX_LINE_LENGTH))) self.assertEqual(7, np.count_nonzero(self.ml_validator.encode("\xFE\xFF \n\t`\0", MIN_DATA_LEN))) self.assertEqual( [[ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]], self.ml_validator.encode("\xFE\xFF \n\t`\0", MIN_DATA_LEN).tolist()) ================================================ FILE: tests/rules/__init__.py ================================================ ================================================ FILE: tests/rules/common.py ================================================ from typing import List import pytest from credsweeper.file_handler.string_content_provider import StringContentProvider class BaseTestRule: def test_scan_p(self, file_path: pytest.fixture, lines: pytest.fixture, scanner_without_filters: pytest.fixture) -> None: provider = StringContentProvider(lines, file_path=file_path) scan_result = scanner_without_filters.scan(provider) assert len(scan_result) == 1, (lines, scan_result) @pytest.mark.parametrize("lines", [[""], ["String secret = new String('p****');"], ["SZa6TWGF2XuWdl7c2s2xB1iSlnZJLbvH"]]) def test_scan_n(self, file_path: pytest.fixture, lines: List[str], scanner: pytest.fixture) -> None: provider = StringContentProvider(lines, file_path=file_path) scan_result = scanner.scan(provider) assert len(scan_result) == 0, scan_result[0] class BaseTestNoQuotesRule: """ If secret declared in a code file (".cpp", ".py", etc) in should be escaped with quotes. Otherwise it cannot be a string secret, as no string literal declared. Exceptions: comments. In comment secret can be unquoted This test checks if unquoted password is not comment and declared in code file. """ def test_scan_quote_p(self, file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None: provider = StringContentProvider(lines, file_path=file_path) scan_result = scanner.scan(provider) assert len(scan_result) == 1, (lines, scan_result) def test_scan_quote_n(self, python_file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None: provider = StringContentProvider(lines, file_path=python_file_path) scan_result = scanner.scan(provider) assert len(scan_result) == 0, scan_result class BaseTestCommentRule: """ If secret declared in a code file (".cpp", ".py", etc) in should be escaped with quotes. Otherwise it cannot be a string secret, as no string literal declared. Exceptions: comments. In comment secret can be unquoted This test checks if unquoted password is comment in code file """ def test_scan_comment_p(self, python_file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None: provider = StringContentProvider(lines, file_path=python_file_path) scan_result = scanner.scan(provider) assert len(scan_result) == 1, (lines, scan_result) def test_scan_comment_n(self, python_file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None: lines = [line[1:] for line in lines] provider = StringContentProvider(lines, file_path=python_file_path) scan_result = scanner.scan(provider) assert len(scan_result) == 0, scan_result class BaseTestMultiRule: def test_scan_line_data_p(self, file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None: provider = StringContentProvider(lines) scan_result = scanner.scan(provider) assert len(scan_result) != 0 assert len(scan_result[0].line_data_list) == 2 def test_scan_line_data_n(self, file_path: pytest.fixture, scanner: pytest.fixture) -> None: lines = [""] provider = StringContentProvider(lines) scan_result = scanner.scan(provider) assert len(scan_result) == 0 ================================================ FILE: tests/rules/test_api.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestApi(BaseTestRule): @pytest.fixture(params=[["gi_reo_gi_api = \"@@cacklecackle_gi_reo_gi@@\""]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "API" ================================================ FILE: tests/rules/test_auth.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestAuth(BaseTestRule): @pytest.fixture(params=[["oauth_nonce: '1gZG4eh6qR6Ul2pqbKc5PwKjNlKadCwW7VW4uSyi9',"], ["authold = 'gigigi'"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture(params=["", "author='bob'"]) def empty_line(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Auth" ================================================ FILE: tests/rules/test_aws_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestAwsKey(BaseTestRule): @pytest.fixture(params=[["\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\","]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "AWS Client ID" ================================================ FILE: tests/rules/test_aws_multi.py ================================================ from typing import List import pytest from .common import BaseTestMultiRule, BaseTestRule class TestAwsMulti(BaseTestRule, BaseTestMultiRule): @pytest.fixture(params=[[ "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\",", "\"AwsSecretKey\": \"exA3p1E42db9bbba8f7ea0f9e47b287de5fc7E57\"" ]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "AWS Multi" ================================================ FILE: tests/rules/test_aws_mws_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestAwsMwsKey(BaseTestRule): @pytest.fixture(params=[["AWS_MWS_KEY = \"amzn.mws.abcaef12-1231-5671-1231-abadea123156\"\n"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "AWS MWS Key" ================================================ FILE: tests/rules/test_credential.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestCredential(BaseTestRule): @pytest.fixture(params=[["gi_reo_gi_credential = \"cracklecrackle\""]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Credential" ================================================ FILE: tests/rules/test_dynatrace_api_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestStripeApiKey(BaseTestRule): # Example from official site # https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication/ @pytest.fixture( params=[["dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Dynatrace API Token" ================================================ FILE: tests/rules/test_facebook_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestFacebookKey(BaseTestRule): @pytest.fixture(params=[[ 'FACEBOOK_T0KEN = ' '"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD"' ]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Facebook Access Token" ================================================ FILE: tests/rules/test_firebase_domain.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestFirebasDomain(BaseTestRule): @pytest.fixture(params=[ # ["api-project-615509201590.firebaseio.com"], # ["api-project-615509201590.firebaseapp.com"] # ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Firebase Domain" ================================================ FILE: tests/rules/test_github_classic_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestClassicToken(BaseTestRule): @pytest.fixture(params=[ # ["ghu_00000000000000000000000000000004WZ4EQ"] # ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Github Classic Token" ================================================ FILE: tests/rules/test_github_fine_granted_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestGithubFineGrantedToken(BaseTestRule): @pytest.fixture(params=[ ["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Q"], # ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Github Fine-granted Token" ================================================ FILE: tests/rules/test_google_api_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestGoogleApiKey(BaseTestRule): @pytest.fixture(params=[["AIzaGiReoGiCrackleCrackle12315618112315"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Google API Key" ================================================ FILE: tests/rules/test_google_multi.py ================================================ from typing import List import pytest from .common import BaseTestMultiRule, BaseTestRule class TestGoogleMulti(BaseTestRule, BaseTestMultiRule): @pytest.fixture( params=[["012-gireogigireogigireogigireogi1230.apps.googleusercontent.com\n", "4L2QMyTm6Rr0o46ytGiReoG1"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Google Multi" ================================================ FILE: tests/rules/test_google_oauth_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestGoogleOAuthKey(BaseTestRule): @pytest.fixture(params=[["google_oauth = \"ya29.gi_reo_gi_crackle_ln22\""]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Google OAuth Access Token" ================================================ FILE: tests/rules/test_instagram_access_token.py ================================================ import random import string from typing import List import pytest from .common import BaseTestRule class TestInstagramAccessToken(BaseTestRule): @pytest.fixture( params=[["IGQVJ" + ''.join(random.choice(string.ascii_letters + string.digits) for i in range(157))]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Instagram Access Token" ================================================ FILE: tests/rules/test_jwt.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestJwt(BaseTestRule): @pytest.fixture(params=[[ "jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxN" "TE2MjM5MDIyLCJ0ZXN0IjoiSSBuZWVkIHJlYWxseSByZWFsbHkgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nI" "GxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvb" "mcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgb" "G9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZ" "yBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBqd3QgdG9rZW4ifQ.4pWgA4mthx4FPPh1AZQY0luTKTQ7VOj6PGwwiANvtqg'" ]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "JSON Web Token" ================================================ FILE: tests/rules/test_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestKey(BaseTestRule): @pytest.fixture(params=[["hmac_key = 'zdosafhzwhpelghs';"], ["keydocker = 'gigigi'"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture(params=["", "keyword='hamming'"]) def empty_line(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Key" ================================================ FILE: tests/rules/test_mailchimp_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestMailChimpKey(BaseTestRule): @pytest.fixture(params=[["mailchimp_key = \"abcaefaacdaf01214561891121451781-us12\""]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "MailChimp API Key" ================================================ FILE: tests/rules/test_nonce.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestNone(BaseTestRule): @pytest.fixture(params=[["nonce = '0vXb8c1vXzgU5m2591'"], ["nonce = 'a1L28lmUiLnOUVJRVl'"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture(params=["", "keyword='hamming'"]) def empty_line(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Nonce" ================================================ FILE: tests/rules/test_password.py ================================================ from typing import List import pytest from .common import BaseTestCommentRule, BaseTestNoQuotesRule, BaseTestRule class TestPassword(BaseTestRule): @pytest.fixture(params=[["password = \"cackle!\""], ["gi_reo_gi_passwd = \"cackle!\""], ["pwd = \"cackle!\""], ["data[\"pwd\"] = \"cackle!\""]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Password" class TestPasswordNoQuotes(BaseTestNoQuotesRule): @pytest.fixture(params=[["password = cackle!"], ["gi_reo_gi_passwd = cackle!"], ["pwd = cackle!"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Password" class TestPasswordComment(BaseTestCommentRule): @pytest.fixture(params=[["# password = cackle!"], ["# gi_reo_gi_passwd = cackle!"], ["# pwd = cackle!"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Password" ================================================ FILE: tests/rules/test_paypal_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestPayPalKey(BaseTestRule): @pytest.fixture(params=[["access_token$production$gireogi121451781$abcaeaabadef01134517891121451781"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "PayPal Braintree Access Token" ================================================ FILE: tests/rules/test_pem_key.py ================================================ from typing import List import pytest from credsweeper.file_handler.string_content_provider import StringContentProvider from .common import BaseTestRule class TestPemKey(BaseTestRule): @pytest.fixture(params=[ [ "-----BEGIN RSA PRIVATE KEY-----", # "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", # "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", # "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", # "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", # "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", # "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", # "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", # "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", # "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", # "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", # "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", # "-----END RSA PRIVATE KEY-----" # ], [ "-----BEGIN RSA PRIVATE KEY-----", # "Proc-Type: 4,ENCRYPTED", # "DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211", # "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", # "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", # "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", # "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", # "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", # "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", # "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", # "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", # "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", # "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", # "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", # "-----END RSA PRIVATE KEY-----" # ], [ '["-----BEGIN RSA PRIVATE KEY-----",', # '"Proc-Type: 4,ENCRYPTED",', # '"DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211",', # '"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp",', # '"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5",', # '"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh",', # '"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2",', # '"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX",', # '"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il",', # '"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF",', # '"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k",', # '"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl",', # '"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ",', # '"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=",', # '"-----END RSA PRIVATE KEY-----"]' # ] ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "PEM Private Key" class TestEmptyPemKey: @pytest.fixture(params=[ ["-----BEGIN RSA PRIVATE KEY-----", "-----END RSA PRIVATE KEY-----"], [ "-----BEGIN RSA PRIVATE KEY-----", # "Proc-Type: 4,ENCRYPTED", # "DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211", # "-----END RSA PRIVATE KEY-----" # ], ["-----BEGIN RSA PRIVATE KEY-----", "...", "-----END RSA PRIVATE KEY-----"], ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "PEM Private Key" def test_scan_no_division_by_zero_exception_n(self, file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None: provider = StringContentProvider(lines, file_path=file_path) scan_result = scanner.scan(provider) assert len(scan_result) == 0 ================================================ FILE: tests/rules/test_picatic_key.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestPicaticKey(BaseTestRule): @pytest.fixture(params=[["sk_live_gireogicracklegireogicrackle1231"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Picatic API Key" ================================================ FILE: tests/rules/test_pypi_api_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestPyPiApiToken(BaseTestRule): @pytest.fixture(params=[ [ "pypi-AgEIcHlwaS5vcmc" # "CJGE3ZjdlNzVmLTRhOGEtNGY1MC1iMzEwLWQzZTQ1NmJiYzMzMQ" # "ACJXsicGVybWlzc2lvbnMiOiAidXNlciIsICJ2ZXJzaW9uIjogM" # "X0AAAYgdUBLuCnfvl7n3ZIgLjCvIDuk9GQxDbw4PHxRUAwPvIk" # ], [ "pypi-AgENdGVzdC5weXB" # "CJDc5ZThjYzc4LWViY2YtNGFiZS1iOTNiLTQ3ZWVjOGFmYjIxNQ" # "ACJXsicGVybWlzc2lvbnMiOiAidXNlciIsICJ2ZXJzaW9uIjogM" # "X0AAAYgNJxF-my_lC6DUayAYu3KhiASbVvQA8FLI7wo-OkXoLs" # ] ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "PyPi API Token" ================================================ FILE: tests/rules/test_rule.py ================================================ from copy import deepcopy from typing import Any import pytest from credsweeper.common.constants import Severity, RuleType from credsweeper.config.config import Config from credsweeper.filters.group import GeneralPattern from credsweeper.rules.rule import Rule class TestRuleConfigParsing: @pytest.fixture(params=[ # Check proper config { "name": "Twilio API Key", "severity": "high", "confidence": "moderate", "type": "pattern", "values": ["(?PSK[0-9a-fA-F]{32})"], "filter_type": GeneralPattern.__name__, "min_line_len": 32, "use_ml": False, "target": ["code", "doc"], }, # Check proper config with no filters { "name": "Twilio API Key", "severity": "high", "confidence": "moderate", "type": "pattern", "values": ["(?PSK[0-9a-fA-F]{32})"], "filter_type": [], "min_line_len": 32, "use_ml": False, "target": ["code", "doc"], }, ]) def rule_config(self, request: str) -> Any: return deepcopy(request.param) def test_create_from_config_p(self, config: Config, rule_config: pytest.fixture) -> None: rule = Rule(config, rule_config) assert rule.rule_type == RuleType.PATTERN assert rule.patterns[0].pattern == "(?PSK[0-9a-fA-F]{32})" assert rule.rule_name == "Twilio API Key" assert rule.severity == Severity.HIGH @pytest.mark.parametrize("field, error", [["severity", "none"], ["type", "none"], ["filter_type", "none"]]) def test_create_from_malformed_config_n(self, config: Config, rule_config: pytest.fixture, field: str, error: str) -> None: rule_config[field] = error with pytest.raises(ValueError, match=r"Malformed .*"): Rule(config, rule_config) def test_create_from_missing_fields_n(self, config: Config) -> None: with pytest.raises(ValueError, match=r"Malformed rule config file. Contain rule with missing fields:.*"): Rule(config, {}) ================================================ FILE: tests/rules/test_salt.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestSalt(BaseTestRule): @pytest.fixture(params=[["salt_data = '^S4lt$'"], ["salt = '1L1SziaanR3sdPz51cHA'"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture(params=["", "keyword='hamming'"]) def empty_line(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Salt" ================================================ FILE: tests/rules/test_secret.py ================================================ from typing import List import pytest from .common import BaseTestCommentRule, BaseTestNoQuotesRule, BaseTestRule class TestSecret(BaseTestRule): @pytest.fixture(params=[["secret = \"cackle!\""]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Secret" class TestSecretNoQuotes(BaseTestNoQuotesRule): @pytest.fixture(params=[["secret = cackle!"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Secret" class TestSecretComment(BaseTestCommentRule): @pytest.fixture(params=[["# secret = cackle!"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Secret" ================================================ FILE: tests/rules/test_sendgrid_api_key_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestSendGridApiKey(BaseTestRule): @pytest.fixture(params=[["SG.gireogigireogigi.gireogigireogigi"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "SendGrid API Key" ================================================ FILE: tests/rules/test_shopify_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestShopifyToken(BaseTestRule): @pytest.fixture(params=[["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"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Shopify Token" ================================================ FILE: tests/rules/test_slack_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestSlackToken(BaseTestRule): @pytest.fixture(params=[["xoxa-FLYLIKEAGIREOGI-9d8cfc0f59"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Slack Token" ================================================ FILE: tests/rules/test_slack_webhook.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestSlackToken(BaseTestRule): @pytest.fixture(params=[["https://hooks.slack.com/services/TGIREOGIT/BEEFLYING/Slack1webhook2teststring"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Slack Webhook" ================================================ FILE: tests/rules/test_square_access_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestSquareAccessToken(BaseTestRule): @pytest.fixture(params=[["EAAAEEPtuW9FnP_CuCV-GIREOGIGIREOGIGIREOGIGIREOGIGIREOGIGIREOGIGI"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Square Access Token" ================================================ FILE: tests/rules/test_telegram_bot_api_token.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestTelegramBotApiToken(BaseTestRule): @pytest.fixture(params=[ ["4603348066:AAFMepdNauS475gWKEpuDt9NpytDegUz4-o"], # ["3039734276:AAHp--rsrIsieHSGWMPMQ8xAzztmgCp009c"] ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Telegram Bot API Token" ================================================ FILE: tests/rules/test_token.py ================================================ from typing import List import pytest from credsweeper.file_handler.string_content_provider import StringContentProvider from .common import BaseTestCommentRule, BaseTestNoQuotesRule, BaseTestRule class TestToken(BaseTestRule): @pytest.fixture(params=[["gi_reo_gi_token = \"@@cacklecackle_gi_reo_gi@@\""]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Token" class TestTokenNoQuotes(BaseTestNoQuotesRule): @pytest.fixture(params=[["gi_reo_gi_token = @@cacklecackle_gi_reo_gi@@"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Token" class TestTokenComment(BaseTestCommentRule): @pytest.fixture(params=[["# gi_reo_gi_token = @@cacklecackle_gi_reo_gi@@"]]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "Token" class TestTokenWhitespaceBeforeQuote: @pytest.fixture def lines(self) -> List[str]: lines = " \"gi_reo_gi_token\": \"@@cacklecackle_gi_reo_gi@@\"".splitlines() return lines @pytest.fixture def rule_name(self) -> str: return "Token" def test_scan_whitespace_before_quote_p(self, file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None: provider = StringContentProvider(lines) assert len(scanner.scan(provider)) == 1 ================================================ FILE: tests/rules/test_url_credentials.py ================================================ from typing import List import pytest from .common import BaseTestRule class TestUrlCredentials(BaseTestRule): @pytest.fixture(params=[ ["https://user:pass12AB@your.domain.com/path"], # ["url='https://user:pass12AB@your.domain.com/path'"] ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: return "URL Credentials" ================================================ FILE: tests/scanner/__init__.py ================================================ ================================================ FILE: tests/scanner/scan_type/__init__.py ================================================ ================================================ FILE: tests/scanner/scan_type/test_multipattern.py ================================================ import unittest from unittest.mock import MagicMock from credsweeper.common.constants import MAX_LINE_LENGTH, CHUNK_STEP_SIZE from credsweeper.config.config import Config from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.rules.rule import Rule from credsweeper.scanner.scan_type.multi_pattern import MultiPattern from tests import AZ_STRING from tests.filters.conftest import DUMMY_DESCRIPTOR class TestMultiPattern(unittest.TestCase): def setUp(self) -> None: self.maxDiff = None self.config = MagicMock(spec=Config) self.config.exclude_lines = [] self.config.exclude_values = [] self.config.use_filters = True self.rule = Rule( self.config, { "name": "MULTI_PATTERN_RULE", "severity": "info", "confidence": "moderate", "type": "multi", "values": ["(?Pa)", "(?Pb)"], "filter_type": [], "min_line_len": 0, "target": ["code"], }) def test_oversize_line_n(self) -> None: long_line_a: str = 'x' * CHUNK_STEP_SIZE + ' a ' + 'x' * CHUNK_STEP_SIZE long_line_b: str = 'x' * CHUNK_STEP_SIZE + ' b ' + 'x' * CHUNK_STEP_SIZE self.assertEqual(2 * CHUNK_STEP_SIZE + 3, len(long_line_a)) target = AnalysisTarget(0, [long_line_a, long_line_b], [1, 2], DUMMY_DESCRIPTOR) result = MultiPattern.run(self.config, self.rule, target) self.assertEqual(1, len(result)) def test_oversize_line_p(self) -> None: long_line: str = 'x' * MAX_LINE_LENGTH self.assertEqual(MAX_LINE_LENGTH, len(long_line)) target = AnalysisTarget(0, [long_line + ' a', long_line + ' b'], [1, 2], DUMMY_DESCRIPTOR) result = MultiPattern.run(self.config, self.rule, target) self.assertEqual(1, len(result)) def test_get_line_positions_n(self): target = AnalysisTarget(0, [AZ_STRING], [1], DUMMY_DESCRIPTOR) self.assertListEqual([0], MultiPattern.get_line_positions(0, target)) target = AnalysisTarget(-1, [AZ_STRING], [1], DUMMY_DESCRIPTOR) self.assertListEqual([], MultiPattern.get_line_positions(-1, target)) def test_get_line_positions_p(self): lines = [str(1 + x) for x in range(42)] line_nums = [1 + x for x in range(42)] target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR) self.assertListEqual(list(range(11)), MultiPattern.get_line_positions(0, target)) self.assertListEqual([41 - x for x in range(11)], MultiPattern.get_line_positions(41, target)) self.assertListEqual([21, 22, 20, 23, 19, 24, 18, 25, 17, 26, 16, 27, 15, 28, 14, 29, 13, 30, 12, 31, 11], MultiPattern.get_line_positions(21, target)) lines[20] = '{' target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR) self.assertListEqual([21, 22, 23, 20, 24, 19, 25, 18, 26, 17, 27, 16, 28, 15, 29, 14, 30, 13, 31, 12, 11], MultiPattern.get_line_positions(21, target)) lines[22] = '}' target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR) self.assertListEqual([21, 22, 20, 23, 19, 24, 18, 25, 17, 26, 16, 27, 15, 28, 14, 29, 13, 30, 12, 31, 11], MultiPattern.get_line_positions(21, target)) lines[16] = '{' * 10000 target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR) self.assertListEqual([21, 22, 20, 23, 19, 24, 18, 25, 17, 26, 27, 28, 29, 30, 31, 16, 15, 14, 13, 12, 11], MultiPattern.get_line_positions(21, target)) ================================================ FILE: tests/scanner/scan_type/test_pem_key_pattern.py ================================================ import unittest from credsweeper.utils.pem_key_detector import PemKeyDetector class TestPemKeyPattern(unittest.TestCase): def test_remove_leading_config_lines_p(self): lines = ["Proc-Type: 4,ENCRYPTED", "DEK-Info: DES-EDE3-CBC,BA2D3F11273F6I7A", ""] for line in lines: self.assertTrue(PemKeyDetector.is_leading_config_line(line), line) def test_remove_leading_config_lines_n(self): lines = [ "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh" ] for line in lines: self.assertFalse(PemKeyDetector.is_leading_config_line(line), line) def test_sanitize_line_p(self): lines = [ " MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCqx5mEeaMNCqr", " \" hNtDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n\n' +", "# //tDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n" ] should_be = [ "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCqx5mEeaMNCqr", "hNtDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n", "//tDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n" ] for expect_line, line in zip(should_be, lines): self.assertEqual(expect_line, PemKeyDetector.sanitize_line(line), line) def test_sanitize_line_n(self): """Check that valid PEM lines will not be changed""" lines = [ "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCqx5mEeaMNCqr", "hNtDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n" ] for line in lines: self.assertEqual(line, PemKeyDetector.sanitize_line(line), line) ================================================ FILE: tests/test_app.py ================================================ import binascii import datetime import hashlib import json import os import re import shutil import subprocess import sys import tempfile import time from typing import AnyStr, Tuple from unittest import TestCase import deepdiff import numpy as np import pandas as pd import pytest import yaml from credsweeper.app import APP_PATH from credsweeper.scanner.scanner import RULES_PATH from credsweeper.utils.util import Util from tests import AZ_STRING, SAMPLES_POST_CRED_COUNT, SAMPLES_IN_DEEP_3, SAMPLES_PATH, \ TESTS_PATH, SAMPLES_FILTERED_COUNT, SAMPLES_IN_DOC, ZERO_ML_THRESHOLD, SAMPLE_ZIP CHECK_WORKFLOW_PATH = TESTS_PATH.parent / ".github" / "workflows" / "check.yml" class TestApp(TestCase): def setUp(self): self.maxDiff = None @staticmethod def _m_credsweeper(args) -> Tuple[str, str]: with subprocess.Popen( args=[sys.executable, "-m", "credsweeper", *args], # cwd=APP_PATH.parent, # stdout=subprocess.PIPE, # stderr=subprocess.PIPE) as proc: _stdout, _stderr = proc.communicate() def transform(x: AnyStr) -> str: if isinstance(x, bytes): return x.decode(errors='replace') elif isinstance(x, str): return x else: raise ValueError(f"Unknown type: {type(x)}") return transform(_stdout), transform(_stderr) def test_it_works_p(self) -> None: target_path = str(SAMPLES_PATH / "uuid") _stdout, _stderr = self._m_credsweeper(["--path", target_path, "--log", "silence"]) output = " ".join(_stdout.split()[:-1]) expected = f""" rule: UUID | severity: info | confidence: strong | ml_probability: None | line_data_list: [path: {target_path} | line_num: 1 | value: 'bace4d19-fa7e-beef-cafe-9129474bcd81' | line: 'bace4d19-fa7e-beef-cafe-9129474bcd81 # tp'] Detected Credentials: 1 Time Elapsed: """ expected = " ".join(expected.split()) self.assertEqual(expected, output) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_huge_diff_p(self) -> None: # verifies issue when huge patch is parsed very slow # https://github.com/Samsung/CredSweeper/issues/242 text = """diff --git a/huge.file b/huge.file index 0000000..1111111 100644 --- a/huge.file +++ a/huge.file @@ -3,13 +3,1000007 @@ 00000000 11111111 22222222 -33333333 -44444444 +55555555 +66666666 """ for n in range(0, 1000000): text += "+" + hex(n) + "\n" with tempfile.TemporaryDirectory() as tmp_dir: target_path = os.path.join(tmp_dir, f"{__name__}.diff") start_time = datetime.datetime.now() _stdout, _stderr = self._m_credsweeper(["--path", target_path, "--ml_threshold", "0", "--log", "silence"]) self.assertGreater(datetime.timedelta(seconds=100), datetime.datetime.now() - start_time) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_it_works_with_patch_p(self) -> None: target_path = str(SAMPLES_PATH / "uuid-update.patch") _stdout, _stderr = self._m_credsweeper(["--diff", target_path, "--log", "silence"]) output = " ".join(_stdout.split()[:-1]) expected = """ rule: UUID | severity: info | confidence: strong | ml_probability: None | line_data_list: [path: uuid | line_num: 1 | value: 'bace4d19-fa7e-dead-beef-9129474bcd81' | line: 'bace4d19-fa7e-dead-beef-9129474bcd81'] rule: UUID | severity: info | confidence: strong | ml_probability: None | line_data_list: [path: uuid | line_num: 1 | value: 'bace4d19-fa7e-beef-cafe-9129474bcd81' | line: 'bace4d19-fa7e-beef-cafe-9129474bcd81'] Added File Credentials: 1 Deleted File Credentials: 1 Time Elapsed: """ expected = " ".join(expected.split()) self.assertEqual(expected, output) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_it_works_with_multiline_in_patch_p(self) -> None: target_path = str(SAMPLES_PATH / "multiline.patch") _stdout, _stderr = self._m_credsweeper(["--diff_path", target_path, "--log", "silence"]) output = " ".join(_stdout.split()[:-1]) expected = """ rule: AWS Client ID | severity: high | confidence: moderate | ml_probability: None | line_data_list: [path: creds.py | line_num: 4 | value: 'AKIAQWADE5R42RDZ4JEM' | line: ' clid = "AKIAQWADE5R42RDZ4JEM"'] rule: AWS Multi | severity: high | confidence: moderate | ml_probability: None | line_data_list: [path: creds.py | line_num: 4 | value: 'AKIAQWADE5R42RDZ4JEM' | line: ' clid = "AKIAQWADE5R42RDZ4JEM"', path: creds.py | line_num: 5 | value: 'V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ' | line: ' token = "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ"'] rule: Token | severity: high | confidence: moderate | ml_probability: 0.9998588562011719 | line_data_list: [path: creds.py | line_num: 5 | value: 'V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ' | line: ' token = "V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ"'] Added File Credentials: 3 Deleted File Credentials: 0 Time Elapsed: """ expected = " ".join(expected.split()) self.assertEqual(expected, output) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_it_works_with_patch_color_p(self) -> None: target_path = str(SAMPLES_PATH / "uuid-update.patch") _stdout, _stderr = self._m_credsweeper( ["--diff_path", target_path, "--log", "silence", "--color", "--no-stdout"]) output = " ".join(_stdout.split()[:-1]) expected = """ \x1b[1mUUID uuid:added:1\x1b[0m \x1b[93mbace4d19-fa7e-dead-beef-9129474bcd81\x1b[0m \x1b[1mUUID uuid:deleted:1\x1b[0m \x1b[93mbace4d19-fa7e-beef-cafe-9129474bcd81\x1b[0m Added File Credentials: 1 Deleted File Credentials: 1 Time Elapsed: """ expected = " ".join(expected.split()) self.assertEqual(expected, output) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_it_works_n(self) -> None: _stdout, _stderr = self._m_credsweeper([]) # Merge more than two whitespaces into one because _stdout and _stderr are changed based on the terminal size output = " ".join(_stderr.split()) expected = "usage: python -m credsweeper [-h]" \ " (--path PATH [PATH ...]" \ " | --diff_path PATH [PATH ...]" \ " | --export_config [PATH]" \ " | --export_log_config [PATH]" \ " | --git PATH" \ ")" \ " [--ref REF]" \ " [--rules PATH]" \ " [--severity SEVERITY]" \ " [--config PATH]" \ " [--log_config PATH]" \ " [--denylist PATH]" \ " [--find-by-ext]" \ " [--pedantic | --no-pedantic]" \ " [--depth POSITIVE_INT]" \ " [--no-filters]" \ " [--doc]" \ " [--ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO]" \ " [--ml_batch_size POSITIVE_INT]" \ " [--ml_config PATH]" \ " [--ml_model PATH]" \ " [--ml_providers STR] " \ " [--jobs POSITIVE_INT]" \ " [--thrifty | --no-thrifty]" \ " [--skip_ignored]" \ " [--error | --no-error]" \ " [--save-json [PATH]]" \ " [--save-xlsx [PATH]]" \ " [--stdout | --no-stdout]" \ " [--color | --no-color]" \ " [--hashed | --no-hashed]" \ " [--subtext | --no-subtext]" \ " [--sort | --no-sort]" \ " [--log LOG_LEVEL]" \ " [--size_limit SIZE_LIMIT]" \ " [--banner] " \ " [--version] " \ "python -m credsweeper: error: one of the arguments" \ " --path" \ " --diff_path" \ " --export_config" \ " --export_log_config" \ " --git" \ " is required " expected = " ".join(expected.split()) self.assertEqual(expected, output) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_log_p(self) -> None: _stdout, _stderr = self._m_credsweeper( ["--log", "Debug", "--depth", "7", "--ml_threshold", "0", "--path", str(SAMPLE_ZIP), "not_existed_path"]) self.assertEqual(0, len(_stderr)) self.assertIn("DEBUG", _stdout) self.assertIn("INFO", _stdout) self.assertIn("WARNING", _stdout) self.assertNotIn("ERROR", _stdout) self.assertNotIn("CRITICAL", _stdout) for line in _stdout.splitlines(): if 5 <= len(line) and "rule:" == line[0:5]: self.assertRegex(line, r"rule: \.*") elif 21 <= len(line) and "Detected Credentials:" == line[0:21]: self.assertRegex(line, r"Detected Credentials: \d+") elif 13 <= len(line) and "Time Elapsed:" == line[0:13]: self.assertRegex(line, r"Time Elapsed: \d+\.\d+") else: self.assertRegex( line, r"\d{4}-\d\d-\d\d \d\d:\d\d:\d\d,\d+ \| (DEBUG|INFO|WARNING|ERROR) \| \w+:\d+ \| .*", ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_log_n(self) -> None: _stdout, _stderr = self._m_credsweeper(["--log", "CriTicaL", "--rule", "NOT_EXISTED_PATH", "--path", "."]) self.assertEqual(0, len(_stderr)) self.assertNotIn("DEBUG", _stdout) self.assertNotIn("INFO", _stdout) self.assertNotIn("WARNING", _stdout) self.assertNotIn("ERROR", _stdout) self.assertIn("CRITICAL", _stdout) self.assertTrue( any( re.match(r"\d{4}-\d\d-\d\d \d\d:\d\d:\d\d,\d+ \| (CRITICAL) \| \w+:\d+ \| .*", line) for line in _stdout.splitlines()), _stdout) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # todo: fix when python 3.10 support ends @pytest.mark.skipif(10 < sys.version_info.minor, reason="argparse default was changed in 3.11") def test_help_p(self) -> None: _stdout, _stderr = self._m_credsweeper(["--help"]) output = " ".join(_stdout.split()) help_path = os.path.join(TESTS_PATH, "..", "docs", "source", "guide.rst") with open(help_path, "r") as f: text = "" started = False for line in f.read().splitlines(): if ".. note::" == line: break if ".. code-block:: text" == line: started = True continue if started: text = ' '.join([text, line]) expected = " ".join(text.split()) self.assertEqual(expected, output) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_version_p(self) -> None: _stdout, _stderr = self._m_credsweeper(["--version"]) # Merge more than two whitespaces into one because _stdout and _stderr are changed based on the terminal size output = " ".join(_stdout.split()) self.assertRegex(output, r"CredSweeper \d+\.\d+\.\d+") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @pytest.mark.skipif(not CHECK_WORKFLOW_PATH.exists(), reason="Only for GitHub repo") def test_banner_p(self) -> None: _stdout, _stderr = self._m_credsweeper(["--banner"]) output = " ".join(_stdout.split()) banner_regex = re.compile(r"^CredSweeper \d+\.\d+\.\d+ crc32:[0-9a-f]{8}$") banner_text = '' self.assertRegex(output, banner_regex, _stderr or _stdout) # check and fix the hash in .github action with open(CHECK_WORKFLOW_PATH, "r") as f: check_wf_lines = f.readlines() new_lines = [] for line in check_wf_lines: env_banner_start = line.find('CREDSWEEPER_BANNER: "CredSweeper') if 0 < env_banner_start: banner_text = line[env_banner_start + 21:-2] new_line = f'{line[:env_banner_start]}CREDSWEEPER_BANNER: "{output}"\n' new_lines.append(new_line) else: new_lines.append(line) if output != banner_text: with open(CHECK_WORKFLOW_PATH, "w") as f: f.write(''.join(new_lines)) self.fail(f"The banner check was updated with '{output}'. Rerun the test.") elif not banner_regex.fullmatch(banner_text) and not banner_text: self.fail(f"Check output: '{_stdout}' or '{_stderr}'") else: self.assertRegex(banner_text, banner_regex, _stderr or _stdout) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_patch_save_json_p(self) -> None: target_path = str(SAMPLES_PATH / "password.patch") with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper( ["--diff_path", target_path, "--no-stdout", "--save-json", json_filename, "--log", "silence"]) self.assertTrue(os.path.exists(os.path.join(tmp_dir, f"{__name__}.added.json"))) self.assertTrue(os.path.exists(os.path.join(tmp_dir, f"{__name__}.deleted.json"))) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_patch_save_json_n(self) -> None: start_time = time.time() target_path = str(SAMPLES_PATH / "password.patch") _stdout, _stderr = self._m_credsweeper(["--diff_path", target_path, "--log", "silence"]) for root, dirs, files in os.walk(APP_PATH.parent): self.assertIn("credsweeper", dirs) for file in files: # check whether the report was created AFTER test launch to avoid failures during development self.assertFalse(file.endswith(".json") and os.stat(os.path.join(root, file)).st_mtime > start_time) dirs.clear() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_export_config_p(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper(["--export_config", json_filename, "--log", "silence"]) self.assertTrue(os.path.exists(json_filename)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_import_config_p(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: custom_config = os.path.join(tmp_dir, f"{__name__}.json") shutil.copyfile(APP_PATH / "secret" / "config.json", custom_config) args = ["--config", custom_config, "--path", str(APP_PATH), "--find-by-ext", "--log", "CRITICAL"] _stdout, _stderr = self._m_credsweeper(args) self.assertEqual("", _stderr) self.assertNotIn("CRITICAL", _stdout) self.assertIn("Time Elapsed:", _stdout) self.assertIn("Detected Credentials: 0", _stdout) self.assertEqual(2, len(_stdout.splitlines())) # add .py to find by extension modified_config = Util.json_load(custom_config) self.assertIn("find_by_ext_list", modified_config.keys()) self.assertIsInstance(modified_config["find_by_ext_list"], list) modified_config["find_by_ext_list"].append(".py") Util.json_dump(modified_config, custom_config) _stdout, _stderr = self._m_credsweeper(args) self.assertEqual("", _stderr) self.assertNotIn("CRITICAL", _stdout) self.assertIn("Time Elapsed:", _stdout) self.assertNotIn("Detected Credentials: 0", _stdout) self.assertLess(5, len(_stdout.splitlines())) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_import_config_n(self) -> None: # not existed file _stdout, _stderr = self._m_credsweeper( ["--config", "not_existed_file", "--path", str(APP_PATH), "--log", "CRITICAL"]) self.assertEqual(0, len(_stderr)) self.assertIn("CRITICAL", _stdout) # wrong config with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") with open(json_filename, "w") as f: f.write('{}') _stdout, _stderr = self._m_credsweeper( ["--config", json_filename, "--path", str(APP_PATH), "--log", "CRITICAL"]) self.assertEqual(0, len(_stderr)) self.assertIn("CRITICAL", _stdout) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_export_log_config_p(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: test_filename = os.path.join(tmp_dir, f"{__name__}.yaml") _stdout, _stderr = self._m_credsweeper(["--export_log_config", test_filename, "--log", "silence"]) self.assertTrue(os.path.exists(test_filename)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_import_log_config_p(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: test_filename = os.path.join(tmp_dir, f"{__name__}.yaml") _o, _e = self._m_credsweeper(["--export_log_config", test_filename, "--log", "silence"]) self.assertFalse(os.path.exists(os.path.join(tmp_dir, "log"))) with open(test_filename, 'r') as f: text = f.read().replace("filename: ./log", f"filename: {tmp_dir}/log") with open(test_filename, 'w') as f: f.write(text) _stdout, _stderr = self._m_credsweeper(["--log_config", test_filename, "--log", "silence", "--path", "X3"]) self.assertTrue(os.path.exists(os.path.join(tmp_dir, "log"))) self.assertTrue(os.path.exists(os.path.join(tmp_dir, "log", "error.log"))) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_find_by_ext_p(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: # .deR will be found also! for f in [".pem", ".cer", ".csr", ".deR"]: file_path = os.path.join(tmp_dir, f"dummy{f}") self.assertFalse(os.path.exists(file_path)) open(file_path, "w").write(AZ_STRING) # not of all will be found due they are empty for f in [".jks", ".KeY"]: file_path = os.path.join(tmp_dir, f"dummy{f}") self.assertFalse(os.path.exists(file_path)) open(file_path, "w").close() # the directory hides all files ignored_dir = os.path.join(tmp_dir, "target") os.mkdir(ignored_dir) for f in [".pfx", ".p12"]: file_path = os.path.join(ignored_dir, f"dummy{f}") self.assertFalse(os.path.exists(file_path)) open(file_path, "w").write(AZ_STRING) json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper( ["--path", tmp_dir, "--find-by-ext", "--no-stdout", "--save-json", json_filename, "--log", "silence"]) self.assertTrue(os.path.exists(json_filename)) with open(json_filename, "r") as json_file: report = json.load(json_file) self.assertEqual(4, len(report), report) for t in report: self.assertEqual(0, t["line_data_list"][0]["line_num"]) self.assertIn(str(t["line_data_list"][0]["path"][-4:]), [".pem", ".cer", ".csr", ".deR"]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_find_by_ext_n(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: for f in [".pem", ".cer", ".csr", ".der", ".pfx", ".p12", ".key", ".jks"]: file_path = os.path.join(tmp_dir, f"dummy{f}") self.assertFalse(os.path.exists(file_path)) open(file_path, "w").write(AZ_STRING) json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper( ["--path", tmp_dir, "--no-stdout", "--save-json", json_filename, "--log", "silence"]) self.assertTrue(os.path.exists(json_filename)) with open(json_filename, "r") as json_file: report = json.load(json_file) self.assertEqual(0, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_depth_p(self) -> None: # check data samples integrity checksum = hashlib.md5(b'').digest() for root, dirs, files in os.walk(SAMPLES_PATH): for file in files: with open(os.path.join(root, file), "rb") as f: cvs_checksum = hashlib.md5(f.read()).digest() checksum = bytes(a ^ b for a, b in zip(checksum, cvs_checksum)) # update the checksum manually and keep line endings in the samples as is (git config core.autocrlf false) self.assertEqual("31a7141e4dda9e99aaef688fc41c2ac3", binascii.hexlify(checksum).decode()) normal_report = [] sorted_report = [] with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") # depth = 3 _stdout, _stderr = self._m_credsweeper([ "--log", "silence", "--path", str(SAMPLES_PATH), "--no-stdout", "--save-json", json_filename, "--depth", "3" ]) self.assertTrue(os.path.exists(json_filename)) with open(json_filename, "r") as json_file: normal_report.extend(json.load(json_file)) self.assertEqual(SAMPLES_IN_DEEP_3, len(normal_report)) sorted_json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper([ "--log", "silence", "--path", str(SAMPLES_PATH), "--sort", "--no-stdout", "--save-json", sorted_json_filename, "--depth", "3" ]) self.assertTrue(os.path.exists(sorted_json_filename)) with open(sorted_json_filename, "r") as json_file: sorted_report.extend(json.load(json_file)) self.assertEqual(SAMPLES_IN_DEEP_3, len(sorted_report)) self.assertTrue(deepdiff.DeepDiff(sorted_report, normal_report)) # exclude equal items of dict instead custom __lt__ realization for n in range(len(normal_report) - 1, -1, -1): for i in sorted_report: if i == normal_report[n]: del normal_report[n] break # 0 - means all items were matched self.assertEqual(0, len(normal_report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_depth_n(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") # depth is not set _stdout, _stderr = self._m_credsweeper( ["--log", "silence", "--path", str(SAMPLES_PATH), "--no-stdout", "--save-json", json_filename]) self.assertTrue(os.path.exists(json_filename)) with open(json_filename, "r") as json_file: report = json.load(json_file) self.assertEqual(SAMPLES_POST_CRED_COUNT, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_denylist_p(self) -> None: target_path = str(SAMPLES_PATH / "github_classic_token") with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") denylist_filename = os.path.join(tmp_dir, "list.txt") with open(denylist_filename, "w") as f: f.write('ghp_00000000000000000000000000000004WZ4EQ # classic') # full line _stdout, _stderr = self._m_credsweeper([ "--path", target_path, "--denylist", denylist_filename, "--no-stdout", "--save-json", json_filename, "--log", "silence" ]) with open(json_filename, "r") as json_file: report = json.load(json_file) self.assertEqual(0, len(report)) with open(denylist_filename, "w") as f: f.write('ghp_00000000000000000000000000000004WZ4EQ') # value only _stdout, _stderr = self._m_credsweeper([ "--path", target_path, "--denylist", denylist_filename, "--no-stdout", "--save-json", json_filename, "--log", "silence" ]) with open(json_filename, "r") as json_file: report = json.load(json_file) self.assertEqual(0, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_denylist_n(self) -> None: target_path = str(SAMPLES_PATH / "github_classic_token") with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") denylist_filename = os.path.join(tmp_dir, "list.txt") with open(denylist_filename, "w") as f: f.write('4WZ4EQ # classic') # part of line - will not exclude _stdout, _stderr = self._m_credsweeper([ "--path", target_path, "--denylist", denylist_filename, "--no-stdout", "--save-json", json_filename, "--log", "silence" ]) with open(json_filename, "r") as json_file: report = json.load(json_file) self.assertEqual(1, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_rules_ml_p(self) -> None: # checks whether all rules have positive test samples with almost the same arguments during benchmark with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper([ "--path", str(SAMPLES_PATH), "--save-json", json_filename, ]) self.assertEqual(0, len(_stderr)) report = Util.json_load(json_filename) report_set = set([i["rule"] for i in report]) rules = Util.yaml_load(RULES_PATH) # test rules integrity rules.sort(key=lambda x: x["name"]) rules_text = yaml.dump_all(rules, sort_keys=True) checksum = hashlib.md5(rules_text.encode()).hexdigest() # update the expected value manually if some changes self.assertEqual("c794796c4e2cb69b89f968a674919243", checksum) rules_set = set([i["name"] for i in rules if "code" in i["target"]]) self.assertSetEqual(rules_set, report_set) self.assertEqual(SAMPLES_POST_CRED_COUNT, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_rules_ml_n(self) -> None: # checks whether all rules have test samples which detected without ML with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper([ "--path", str(SAMPLES_PATH), "--ml_threshold", "0", "--save-json", json_filename, ]) self.assertEqual(0, len(_stderr)) report = Util.json_load(json_filename) report_set = set([i["rule"] for i in report]) rules = Util.yaml_load(RULES_PATH) rules_set = set([i["name"] for i in rules if "code" in i["target"]]) self.assertSetEqual(rules_set, report_set) self.assertEqual(SAMPLES_FILTERED_COUNT, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_no_filters_p(self) -> None: # checks with disabled ML and filtering with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper([ "--path", str(SAMPLES_PATH), "--ml_threshold", "0", "--no-filters", "--save-json", json_filename, ]) self.assertEqual(0, len(_stderr)) report = Util.json_load(json_filename) # the number of reported items should increase self.assertLess(SAMPLES_FILTERED_COUNT, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_severity_patch_xlsx_n(self) -> None: # uuid is info level - no report with tempfile.TemporaryDirectory() as tmp_dir: _stdout, _stderr = self._m_credsweeper([ # "--severity", "low", "--diff", str(SAMPLES_PATH / "uuid-update.patch"), "--save-xlsx", os.path.join(tmp_dir, f"{__name__}.xlsx"), "--save-json", os.path.join(tmp_dir, f"{__name__}.json"), ]) # reports are created self.assertEqual(3, len(os.listdir(tmp_dir))) # but empty self.assertListEqual([], Util.json_load(os.path.join(tmp_dir, f"{__name__}.deleted.json"))) self.assertListEqual([], Util.json_load(os.path.join(tmp_dir, f"{__name__}.added.json"))) self.assertEqual(0, len(pd.read_excel(os.path.join(tmp_dir, f"{__name__}.xlsx")))) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_severity_patch_xlsx_p(self) -> None: # info level produces xlsx file with "added" and "deleted" sheets and two json files with tempfile.TemporaryDirectory() as tmp_dir: xlsx_filename = os.path.join(tmp_dir, f"{__name__}.xlsx") _stdout, _stderr = self._m_credsweeper([ # "--severity", "info", "--diff", str(SAMPLES_PATH / "uuid-update.patch"), "--save-xlsx", xlsx_filename, "--save-json", os.path.join(tmp_dir, f"{__name__}.json"), ]) deleted_report_file = os.path.join(tmp_dir, f"{__name__}.deleted.json") deleted_report = Util.json_load(deleted_report_file) self.assertEqual("UUID", deleted_report[0]["rule"]) added_report_file = os.path.join(tmp_dir, f"{__name__}.added.json") added_report = Util.json_load(added_report_file) self.assertEqual("UUID", added_report[0]["rule"]) book = pd.read_excel(xlsx_filename, sheet_name=None, header=None) # two sheets should be created self.assertSetEqual({"deleted", "added"}, set(book.keys())) # values in xlsx are wrapped to double quotes deleted_value = f'"{deleted_report[0]["line_data_list"][0]["value"]}"' self.assertTrue(np.isin(deleted_value, book["deleted"].values)) added_value = f'"{added_report[0]["line_data_list"][0]["value"]}"' self.assertTrue(np.isin(added_value, book["added"].values)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_doc_n(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") _stdout, _stderr = self._m_credsweeper([ "--doc", "--path", str(SAMPLES_PATH), "--no-stdout", "--ml_threshold", str(ZERO_ML_THRESHOLD), "--save-json", json_filename, ]) report = Util.json_load(json_filename) self.assertEqual(SAMPLES_IN_DOC, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_external_ml_n(self) -> None: # not existed ml_config _stdout, _stderr = self._m_credsweeper( ["--ml_config", "not_existed_file", "--path", str(APP_PATH), "--log", "CRITICAL"]) self.assertEqual(0, len(_stderr)) self.assertIn("CRITICAL", _stdout) # not existed ml_model _stdout, _stderr = self._m_credsweeper( ["--ml_model", "not_existed_file", "--path", str(APP_PATH), "--log", "CRITICAL"]) self.assertEqual(0, len(_stderr)) self.assertIn("CRITICAL", _stdout) # wrong config with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, f"{__name__}.json") with open(json_filename, "w") as f: f.write('{}') _stdout, _stderr = self._m_credsweeper( ["--ml_config", json_filename, "--path", str(APP_PATH), "--log", "CRITICAL"]) self.assertEqual(0, len(_stderr)) self.assertIn("CRITICAL", _stdout) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_external_ml_p(self) -> None: log_pattern = re.compile(r".*Init ML validator with providers: \S+ ;" r" model:'.+' md5:([0-9a-f]{32}) ;" r" config:'.+' md5:([0-9a-f]{32}).*") _stdout, _stderr = self._m_credsweeper(["--path", str(APP_PATH), "--log", "INFO"]) self.assertEqual(0, len(_stderr)) self.assertNotIn("CRITICAL", _stdout) for i in _stdout.splitlines(): if log_match := re.match(log_pattern, i): md5_config = log_match.group(1) md5_model = log_match.group(2) break else: self.fail(f"'Init ML validator' not found in {_stdout}") with tempfile.TemporaryDirectory() as tmp_dir: custom_ml_config = os.path.join(tmp_dir, f"{__name__}.json") shutil.copyfile(APP_PATH / "ml_model" / "ml_config.json", custom_ml_config) custom_ml_model = os.path.join(tmp_dir, f"{__name__}.onnx") shutil.copyfile(APP_PATH / "ml_model" / "ml_model.onnx", custom_ml_model) with open(custom_ml_config, "a") as f: f.write("\n\n\n") args = [ "--ml_config", custom_ml_config, "--ml_model", custom_ml_model, "--path", str(APP_PATH), "--log", "INFO" ] _stdout, _stderr = self._m_credsweeper(args) self.assertEqual("", _stderr) self.assertNotIn("CRITICAL", _stdout) # model hash is the same self.assertIn(md5_model, _stdout) # hash of ml config will be different self.assertNotIn(md5_config, _stdout) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ================================================ FILE: tests/test_doc.py ================================================ import unittest import deepdiff # type: ignore from credsweeper.app import CredSweeper from credsweeper.file_handler.abstract_provider import AbstractProvider from credsweeper.file_handler.files_provider import FilesProvider from tests import SAMPLES_PATH class TestDoc(unittest.TestCase): def setUp(self) -> None: self.cred_sweeper = CredSweeper(doc=True, ml_threshold=0) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_secret_pair_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "doc_secret_pair"]) self.cred_sweeper.run(content_provider=content_provider) found_credentials = self.cred_sweeper.credential_manager.get_credentials() self.assertEqual(40, len(found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_passwd_pair_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "doc_passwd_pair"]) self.cred_sweeper.run(content_provider=content_provider) found_credentials = self.cred_sweeper.credential_manager.get_credentials() self.assertEqual(76, len(found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_ip_id_passwd_triple_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "doc_ip_id_password_triple"]) self.cred_sweeper.run(content_provider=content_provider) found_credentials = self.cred_sweeper.credential_manager.get_credentials() self.assertEqual(5, len(found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_id_pair_passwd_pair_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "doc_id_pair_passwd_pair"]) self.cred_sweeper.run(content_provider=content_provider) found_credentials = self.cred_sweeper.credential_manager.get_credentials() self.assertEqual(248, len(found_credentials), found_credentials) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_id_passwd_pair_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "doc_id_passwd_pair"]) self.cred_sweeper.run(content_provider=content_provider) found_credentials = self.cred_sweeper.credential_manager.get_credentials() self.assertEqual(44, len(found_credentials), found_credentials) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ================================================ FILE: tests/test_git.py ================================================ import base64 import gzip import io import os import shutil import sys import tempfile import time import unittest from tarfile import TarFile from unittest import mock from unittest.mock import Mock from credsweeper.common.constants import Severity from credsweeper.main import EXIT_SUCCESS, main from credsweeper.utils.util import Util class TestGit(unittest.TestCase): def setUp(self): self.maxDiff = None # * commit b7b09c8cdec2904dbb6f77eec2aa6abaef975252 (HEAD -> master) # | Author: Your Name # | Date: Sun Jun 8 16:56:48 2025 +0300 # | # | Key removed # | # * commit 9d3df94e8257240aa2b98dee47dc17992c0b7476 # Author: Your Name # Date: Sun Jun 8 16:56:25 2025 +0300 # # Key added git_repo_tar_gz_base64 = """ H4sICCSlRWgAA3NhbXBsZS50YXIA7DwNcBzVeTYMBC00Mb/JNIU+Vopl2drT/eok2ZYxko1F/SP8 Uwi2EXu77+7Wuts974+kA+OZFiZDYICQAAmEv1APNGQwGXcYCE06odRAan4LIWVaMiWpEwqmnQAB p1Do9733dm/vJFkSls9kuDcwvtt773vf//t+3iqSM9yOOUd2RGGk0yn8N5ZORcP/+mNOLBWNxxKx RDwJz2OxJPxMUkcYLzY8x1VtQuZk1Aw16fCk86b6/Y90RFD+VmYb1VznSOnBzOWfiEVjDfnXY1TJ P5M+IirwCeSfjDXkX5dRK/9MtFvr0nSqxbujST2T6cym0xS+qWqnmlFptjudiqfiM9sDBZxMJieV fzyRrJZ/PBYHlSDRI0Ny9fiMy39s7s3X/710TGzenAfeOf3fTtzzswcGzug/cNzl+5a8Nxj9zQnd v/volx/+9VvRY7+1re25z698cXf65LtffybW+hfzVyy68diLb2re+0pu3xMfdF8zr/n7X0mWR/9j yf5bB1buP0k9Yf6e5x7f3m08WThl5XnP3v/D984rlh4cvnLzgmPue2D3F//wtT0//s9vbOu+cuSf Th3u/8Llt8/7+d3a7n133froPx+/5vz/W/WXy275fd/JR5s3n4VRZf+p2FH3/7F0HP1/IhFv+P96 jFr5J2lWSyaSnVoyFk9k4l3JqJoEcSXj8F8mBVJLZFLx2Mz2mMr/d8ZTNfIHbels+P96jLG5xRsf vuW7g6fN2frO6W+8f/CE/nk3fXFsyVnyqqu2DrbeEx24+ulfPPiTh+67I3PN19+M9JZO+eDN95fp V339itLSri1b327q7dky+K624Np5r7RdfdKlT12679RfPnfsXV/a9sauRw9mn/C6HrpAPv75XTc8 8bnHnyy88fy1N+9+Zef9dy29ueN2eeu/FIzv/uDOg6XMxYtuSSr/O5icbw0e3H3aRfN++pb105Nu 0246oO57W3/xxI82nb/xnJdjO49/+R/c25Rr771JfXr02/TegVfW7hi+5O17HzzuhYt/t//1V+dK //NnK4tnv/Q3V94YHdz8V6fZG254f/vr+0b37np/53M/7rrtOz96dezX1629iz6ya/iSnaUzvze6 /ex1P/z5w7eUDpx63Tnb5z/7wXeuz7+5b9FZw088uiN13WvRvY9884J3Pnf+V3sXfvCjh27/0+9f /PQjyd/2n3fhfcWuLxzof+Hgs9K8TXd+/K83fbnttI96v3J//LXXUk8+b91/lrTjnV9d9IP/Kl70 rUU3frj/xGV3uvfM65e2nXLGq7veKe85sPrzLS/8dljb/eaB7+19OLJ53ddaVy7fO+f3iT955Y2P czuP3bXsjm/UUf5V9l9SteEjcALMwP/HOyHwB3cTjTfy/7qMKvmnPwX5H5M/nP/JhvzrMWrl35XK dqXSiWgqG83Eo5CNxbuz3fFOqsd0molBApjN6smume0x1fkf7UxUyz8eTaUa+V9dxtjcRW3nr9kU 7aRRiPMSsQueWvvAS4tWPUNPePeDXx8Y6X/q4sfVpiuvvufFl9f/5oFr5pz62EkfHm2UG2MWR5X9 G2bW+pSc/4lUw//XY1TJv1v/tJz/yViiIf96jFr5J/Rsd5J2xVNpOPtVNZ7p7tIpTaZ1LZbu7o5r 0Uw6me6c2R5Tnf+Q7o87/7H+3zj/j/wYm3vzM2ukf4zOO0f9RffeA8fd+mGq6Wq345HRW0eyg9H+ c4957723Tv/33oNjw8r+V5ev+++Xvpy4at5P+v+8/bLH9t69Pf/NlkTM+NWK3Bkn2xfsf2Hoocf+ 7vrjb9jypd2bz0x8bP9h58E9L9vHnrllT9OGd0srr/3b6y97uufjn710R/qp/tXbPpe8IVk62uR/ 5keV/SczR9//i/5ftLPh/+sxauUPnl/XOpNxLdNJM91qtDNKU8lMtkvv7I53dWUzcBZ0R5Mz22PK /C+Wrun/QUaYbPj/egw//7t0zhyp/Zi5RxudxqjzYPaft6zhI3b755PkfxB+Nup/dRkh+aulUqFc Ul0trxSdXMRRi6UCnY09ppJ/OtFZI//OdLIR/9dlNJ/dkTHMDicvNUvNZLlJ6BiTO0GdII5mGyWX uBbR8lQbJm6eEs0qFg2XFKwcKVLHUXOUuOowNUmmDBAqSkSytlUkKkBUiqpR8CdH2EYb8/4Oecsr 6LArgBw13DwxLVO5jNoWAbm4nkPUrEttYjiOZ5g5AMf3sK2SbaguDVAwsgQhqKbrILqOa5VC2EZI ZUfDQRCFgjVKdZxKdVgYIsyHmDUKPrIwyVQzwBQ3bzgMSjux4VFRPMGpCEquNiE5IkkRAgamOHnF oa5Xkvge8NtSuWUB/AJgRpSSajuUKArOhMV5wu2Rz0VAbbLkUsclyhiRWwIQMpk/HxhHteqHLZfH Fskt58hXSD3S1PIP2X/JpkrJc/KzaPl8TGH/8dQ4+0+lUomG/ddjVOz/kOY/Qm0jWyajedUFAyJq xvLY8wwlqDJUBwvrA6MCk8qUiQxKBeDwF9k3YJfkVYe7EbQ7sDebFi2wYG7n7SQDEDM0a9kUrLwM dgXmjksg5TAFMLbNQJYbnUAOPYfDXYc6znmYFoczahQKIVyFCxK2jARpHHcGBnHLWuggcCkYJ9g5 kOD0sGUtMbBUshZt38qG6QBujOYNja/HjRBuhiIM3TIpLo3j0k3rV089F2YDnfgLR9/NI8M9h/lA gp5HD/bNW+A9VDvnFanJWMFppds9tcBJHTCBrUXVNSzTF13g7xyBiQp85xhwJiFGjgf+zIDPIIaC YVJ0rQAOFwODTV21YZpZAniGKdhmFzmbCFlSsICrgGW21/9sGTp8FnjzH8QX/KUiFe6A8GwYRRGN Ir/AO40AfZxbwPkK9tSmbPPwiYRG7aKjZxKVLxwYlMmCUcseRkzh9MjZMLEN/DPfH7xxTJY8uwAf 4rIkoQ4t5Q4aVDCv8AQZpOe4OgBY0qHTkQ7TA0bvIK5NWjdHlW5VyW5tJa3R1jZJApYWkEJVJ4zy ISBWfAJKheTYQ/ERnkq6JTXBMcY8vdwSzJbJUviKGMlSE9BpSk1NzWQVsB+20GkBdBOe9EhNtODg pwqICuwqGD4QgLKWjpKMrZpavp1ZPsgYj0afuTgJfs0hfyr4wFOxFUDYVNJVrvxgiI6L+lML0IRN JgBYwS4SqYaeNSRGYx+LOUCnCMhPgIAf+IellfOzYODZaBK0TBBsibReAgtakQO4l9wW4gpM80/L MCuolrdI7/w4kVdanqmHNkSFaQmE2I4uxbdLma3EyCXGscb/mf1K7Gl0Gufv0R41538lgKlj/N+Z qs3/OtON+k99xnTj/0MEANxOXKoDADj8P6UZwAwj+WpjmCCShwnCEU0dySMwPrkqkg9AhCP50MOZ RfKfbITs32OufNaj/yntPx2Lxmvj/3hnw/7rMqZr/xk4AoeJZ6omHICgJhDCqzmHWziEZeAdzBzY WE0SAEahUWME8kpVG5ZFlO5Hqj0YAjLTc/JqTLHACbAPEC/M0Fi55srcxvssM2vk4IPCBnxg6h1h KX+IABaksnAzY1kFCm4KDJvFk+A17PGk+nG1XzowTNgapjI4EHVYjuFadhkylHPLEJdlVa/A4mxw mpbZirlNpBoXHrsB7CkwYfPQ9U2CxmEhUbR08OtTI6Hi7qSolnFvtojlBcw1axDoYm4RCW3KwKE/ PhTtPFKcLvl8Np1NFujULDPsp4cKD1kLZUHxRDgBREPolsiJJkcJtsGjlFOBysuVFjS4WITwnqVc krARnqGAjcAxw5MUMBP+OSH7CzeoWeqWeZItwXm4mSiXwZFy3sDGof6B9TLZupjwgJeFu3I/44ft mVUJNTNp/+D00YjIGB37C8kCAF62PHbatrNPGjvEWcJYJmJDthnCr15MWqKY92H2x+mBD5yY3jZ/ Jg+qMRGokCE4IRPF4g/46sp3DmQcmR6GBz2H2HX8pr4cmCepdRwi89DYrzDRLZfoUtSXSRxNmzRO 5acFIrygTapV1alA1M6vwgJseQYowGyxOvAW01odzG5DjmpBNmdaYARc28BrQCRlYXaNjwCsAwat UNIa295aUd2O0HxI5zQVoiwMlYKFMlibJG8y/cqIb3LyQsjQZcwAuS4sXLiQDPJlYRz4UQKpPncQ lNl9tVo0LV4sUUfVAuXgBXGgG8sMoKVC/dCkMaqJRCL4Tzs4wVYwcj+bdC2Rs8Mj0MbI4ZYamHlU VD9I8ytGwH8aYhIS5QKevod/EOJUXYVxQnF9ctqYPQiG+xbY7m/IFjPeN8FvTgeeUB0L20Wsy5J4 z1SqDlJ4CBG/7Q75jq3lcvGpubkC4wqesiNpteYkk7OBStf2aIjIppB8MbOo3bWdtFTt2o5iwlS+ 6gyBZyHV4eIPQ94EXGhFRuFZCF5JBZkoDgFZoFqz49n3irxkZZXUHMbUFVjhagGqVBXfuHg434SW cI6FWRHY5JSM6PdPTn54z4DiQ2LJDBpRrJVrGMvA9quwxDynOlfydYr0koqmx3vnx2qLM1y0QEar v6QVSMESW5mXnpzIBBJbw9CYAQ+mFFUedqzVcRE8BBzwD6aKNYKqyC21LplNOIT8+vwoQxU7HL4I fewn0LRaIsadQTPRt9nCl0dctfx2bUgnKuHXxAsmMqZx62aD1hqoh0X0Qo7vcr8Bgp4aoi0HMQg3 RvD5Mpwbck68Eovnbw/4v2HTGjXZ+YTVci8o02LROTA67GDgjGp3zrELkKs5+FYapoENgj+eGmdj TD7C9V8Pwg/XUligZnnurFWCpqj/pBKJdE39Jx2PNeo/dRnT7P8K/6H6DVyFlX9tCi7EhKd4prOr A+M7q4Y5Yg3zihBWRcMFoQWxNkytTcIiAlXjhdtK75hg9sl3RveZBQ9oanSB04Y+FXt/FZfazuYy YH5LFRuVtsF6loH7y/vHHHzkhWzNswGqWygHrWmkDIHxkoLAl6VTfXzuuRwCz308m7dVR1TbYLUq TKSpyxulfNsB03Hh2OW8qRQA2iFbxr5r0P8FCj3MfgzeVsZuJav6IJcFQkC4TscATHXrucIH1jGH U4JA2CP4FUrofVr9bExQy4/WxZx9GUu0wCffnxSxJi4awQKoANLOKy3YTObEsys2bD6bDecMsFp0 mF2jVCGFyyVSrTy8wcC4Ah+tEWrbhs7lWKkzZWheHTEsz16MvWIKk0T5QseONhzCwB8DlZr3x0OL K0uxp4BZGusbsya4ZQBRGNaDnEewqANfed1L48Wu6i6G0BMnfJOIlTsrfX4g1ydWME1qDsUMOYtx m1PMedcj+b3OGJrnAGZoZqhTMv7CAz/ggWGVmwULfBPTLZaqOhbmpKQIjo/FKTxSD0nXssfJvy0i 6QYEIm3kcinUK21ZKAf58RWI4Tp20QORLKrDLFwBiWvYoLHRwLAby3CcWL/8cipHAzlhswl5WvQX Qc5u2KANSC6t2PsUrA2polDCQF1x4zBDQ8zkEl4J7BBOkSk3FzeS6KBSlVn9jOc0qq4wYhSPKEWy asXyfsKqdkgRcFVHxbQILXoFRB7XZKkb8kUIKSgaghqDFHWgVmNVEnGVwfe07aivjPRRi++Kdy+Q CRPhwu68gRiAMQbEpVzaDkaAAAUXOAAcMAFaWR1ARAAcM/4b051KuZNdcBimtCQkxG83BDIWZFTJ mAHT0S+i2hnYNEAXVbl0E/JZGeqOUiFcf9OIJAyOGzWWTkF5bapYtlIA4lBMGp5KqukUuFfGPmCe QkYplKOPeQUAkxVKPs4RsF9yrGZTGw9xycMKw2RhvXCAOG3ItYZ0WipYZTCRrGcykSETMp5RAH/S ET72IhrXrLX89o7qVtQquLszRjUPNTbw3SEXz3UCDz3BymBSmN1wvFgkVKZlBQngONMS+MAY5BDL J6N6LVuFyABbWNqg6ipEAmXkEHOsqqaBRsOCApy9NMJ6P9j81fEZkTWdRCCVBl7yO0s2RYkAKOyK oiQBs7OZrnHbVLjNK9shxTByJkrV8TLgmjyQLDwDp2ZTONN5Ioa+SN5UQuGwc12UFlXQSV32q8Yc POoUq2khlO2eQd1JdgiDvlDwIuA0O1Y9OMfVHAhFKLksSsUb/UI+sS0vl69SQCvrX4fCzHsIwAzB bAQJirKMyOgkZNJDVqwZ3PjVoY3rV6wY2rBqeWxo1YqLkIbqohzlPiXeG1RKBNIIeyn+Jip77PsE NUURso2vLbZNwDQhkYBpmqrhoT0R91pww2nxcCIOBtvWeq3KRZ0Q3D7WaEC1F0FdtY+xmHdnbEXg Rzu8/tSPmvs/RWrn/LsK9cr/op3J2vs/6Vjj/m99xmze/5mg/8/0Sfbv9VR6/+EL+fwCEAYo074C NOEFIJZygWeDJGHSy0AMn8O4EhS2jwkuBVXu9viNq9oLQHjVRyJiiCs/k849gvd+/FFj/7Ns+XxM Yf8JNPaa+3/Rzsbf/6nLOML27yt9XRyAkcVUa3bvAFZM3cjWtK4URTCFRWW9Ne0rHrKoOdWAsDEc nOF1fAPTMIFVDwu3iJjJrksWS25ZVNdY5FaBM3lQVxPLsfcHwrE/a0cwvi7f0DcwwKhEmkW5CgkP aliYJ9sejfCmP6xRHc0wptXz9yezlv96yqM/rDKVuL5w/xyRmOuLYacBlca2IH0rQczM0hPR1wcR Ul4WUEfw1vwEuC/2XwvgSUyRp0L8NQZIRSopf/gSzoWYX0GuJl77yrKkUaRhWHm0ITVlbGC3x8Wr BESkaQ5kcJhwqDYsw3tRWD8wdfEGimsUdGBbuKvkM6S2D4qKUJ0BYtUG8tQMtpPw1pFqs6vo2GAS qICMwFywE9ROFmCOikCQfqAPwnSb6u0sfy1ZNlBgFAxUI4tssAogWYfEopDVdniOzUzetdsgRzQg 20YojLbtHnsLhCMANox11zxYGmWZdBbfDBCJPdZhciYrqjDUIlITO/u4ijCFDmUMKCvFMgtl+Own ZMC8pcvx3k6Lr/k7pCZCVvcNLV+9emkfEq3opHUzUXZu3RJtJTvIqEYUrQ3ZGBXWBakRWbJky4p1 K6UVtm3ZPWQ5+KEi91ggf1EgqygNe3MGbJmlbFjD0VTkOigcyLvo1ObL7IURJtgStdApYkbHboL5 uoqp7Eb+GhTjORaAuYPURwzHN6bAu/hvFUrCOLFJx30qfkPm66wKyG5UAXq6D4Phy7Jclk/3SBBD hIxxAgNkFiwha6ovNrHXp1gvEUsveQPExlSaIgOddq7+DFUrmwXNRnQC1jlM3zHRFhY8LlvkSAay D4QLyeHRPuoaY4IRjv8sx1WOxCXwqfK/eDpVG//FG/lffcZ04z84Z0voMVSCJcyqO3bsyGGHF8RD AET3ihleBEOf6Mw46qqoIYZdgZsRhUKH2rCNgn+qsOFRDn9U538oYqXy3vksuYGp3v9Ox5O19Z9U LN2w/3qMmdr/xH8BYqrMj3XdQq9Mc2PHuCfP21jYka768wvt4hVsDlGEnMF1Xb/Xx18JbfYXQXjr WJ6t0VB2yRo5dgnfkeYN5Zq/91BZzWMz8YK5YACGOpO9Xd7ud8DFe6IsK7bd4P3ymeSZNYYnR4LG Am+Fm1rB01l3GXM9ISMnwqjMGjYEWJbJrwOIHjQsl5vJYIHizV32gk4YV19s2KPJ00Jp/Kt5DoXQ Ug9vTP0sDpgvh6J8FtyLNF2xebdTZF2BLLdhs1m83I8/sPV8jSzAIuNd3qhEJBFlED3lAbroXuPt bM0qiZahosDOgCOcPuw7pi/sYpqvS06FHGC4rQe6DakBtms2QAqDV1kgfAUdw9ccSC3iTEc19s6h 4/rNOVAg9pcI/MaPDcKD3EYlOcsClulUBfH1rVuzZmDj0JoN5w2tHFi9Alv44tGGdZvW98GDuISt nqUtCUkKkrIStQtEMSL/397V7LaRbOeLIBvyCZJd3bYCkjL/RUkWacljS54ZXXskw5bjybUkukk2 5R6T3TSbtKx4NIsACbLOEwRZJY+QF8gmQHYJsg6QbYDsAmST81fdxW5KlGYkOhizAP2wWV11qurU qVOnzvmqZYMSDfRkWB0fe3jAme2XjouzxrRULEK2O0ulHPrPx6igSBFx5p6gJr+EtFh8qqnyP+Iu Ck+p8zk6vFLTCYSRyPD3kJhS69CzVFG9uXAbGHLKG3gzhTsuoLaEjsFLxMh376pN2OFNI141Gljb co7/0U6JL/YfiWniA0hyNKbyiwePnzd3dx7vHcDekaIKPJUJSseH2eLy1mGuuLxUmmCAujqslAYZ bPCJK+fTMDNHBVBlYKYO8ZDQ9QrQLW20/chTIBPqt6Z1NUUFsEX4z+P9bbHsoN6+pHONPsVTMu6h JnLq3btTh/eOuuahl7H+BzCZHAzULXywe+4NbgNmrP+1Wjm5/i/iv+eTror/IhxB+j96imRtr1NC UxN9AqXcdYKciHgUlmI5wEnp2orY6pfGfZs2X2PVjh31aJwQlIxULfoLGmZB9IG57gKdnBlW0puP moGuJp52JoxMe9RLWewhtOpg6KIAq5CPCvouiS6h/VHGg2A0dOy+dmLSCDBo7+m5aBt10e+SV2l0 rkJTFdqBi+ohdhsUJ6SiupQNxm30wuqOe4rir0Y5rUL1bJBPPIjwxJaRzIcuIVgm+R7p8Eb0ke9E QxkB5YgpShuRA91U9oaUI/+JRor3InASOVpqVBjuNnIhFMc/CsSPOhLNUGxW0s4V4QAV9QA95+Ky Ulcd2u2euF7u0uzPofLoDbTZ56iC5w5LfaTgYH9nX9HHt36vg8sCa4fGeQQNfhC5yGATztjJ0HOc DtoMdb3NNm6am9CpyOvsX4dsx+GeqTtUXT0k4KKqsuiBo4IBujrRI6g1hzZZtAGeG9XJ5E3W89gL xkMnxrHCpkGS/aBsXCSBQQsrsA5hUZb68UcYvtF46F2dcPbDgrlG9eF73BT6mnFIBr2pLWFGlaZc rzq0e/qIL0RFRJW+H7swadFlq5NHLycSF6Oznn49r5xRu2hSA1II+FAizW8g0SmToPegIvPi8d7O 4+8e7j6l5R30mpd7oNVg3JA+YBL8otjRjJ5hzPQISAGT8CKuz9FpBEy8i0qh863Ly4CZw8VomQFl 9d+hFomqUn/QccmcP0XF+J4Tv31CEeNcAhnwC92ONioj/1lL+lvQuCbifQROCP92rbCssClDZowC HmEk2/BKV2mUL6d1RnsmCpzeGbogPIPD6aC9ZaesIHW2uNfFbc3cY0dtNANQgd3GHgpTHV2Nf1/t P39CbmPpdmeid6AH6MQS4ZAK75V1LMo4NsJit1RmoJhooG+46dNlFGWA1kkFV2LWqd8f7B88fKqp mOhbauasocIhBh18wAGZIdPwFhj4pmt2R0Y9/n73gN6JCZAv3UnM0P9v3O6n0wz9v7KWwP9dKy/s //NJN4H/Osv6h6Yp7fiRn2oLJO03sgbGzVQJX5Epuway0FzHV2Sqp0hoO5pEjL0tvNi4xe+lJ7Yv dnwnP/fwKHumuQrHYYejSMgyhTuEsAGqZbNtCp+fACsP7R6DbpK6lzBBCkYKvotO9gp6U0IotCNN 0u7y8OXBt/s/2+jCS1UAa5U2qVRIp+QVlJ9tbfECpK2jmlvbsi/ojEFhbeNAJ3sL9W5ernhNygpW YIygjFScTqnAH46gHWPPfa8Kbd0iR2VKx69V6mi5gr9LnUzOMhd7DI3ZuZyOaE3/3PPfkP/doO97 eKJXOMXe7NveXOw/lUplLY7/u75WXZz/zCWB/Detj6BjBujyNIRNXoP+P7WHHoiUgD/tPtuu1/cH jldtXG4wQvPpyRAnwCthJsiefTsaDYJ6qdQFXbwFLyD3vR23iq5f0jxXykWBTiiYB7BjVuOB6jgj jITyTmgXfUqOKCEOFQV4xOxLtKkMcMba6L0YkCEkCves5qgIsn+E0fHvyCLLYLkjxr21qTdoIenI UYWsGB2KFCVizALEnoHqK8edyMr2wWFkmZBo8r1izy/j9aJ6hiEyFJ9HwY1R7Iz2ZfP9kV48E0F0 Acpx8svCaBys4wQGZ+/l0+suTe/HzvAslASWFI4kZQxlvQ1LQzEUHMqQJpPvZ6D2/pnKLslI5NUS 9nyTW96kludAKn/18Pk3f9qYXApx095xWuOTEx59Noq/ONh5/Pw5yOqy0oVOKfPQs6i07VB9kfM0 DD5DS4G8iluZkDgYUmSPTzrQyENYKzrZU9yqqMFUmn4towvIFOkUBP3ZlLK+BlYgeAgbSQDOadse TqlisUjkwcYOumYJuq6Jw9mksdyENZo/Q84mbJ+zuQbnGzqj4RlaAOTzD4HvNQfvThppB/Y2SLU4 A6rfvdjfq9e/f9FIp8JcuPLp51B3Cko5R5tgx0+++ezZ9DefPUOqofqePfbab5t6kInEYNxSsedY MlLqQxH6WZN6Et9ADI6sG0Rt5/ecTnbJz9EopHjaNYdOMO6N4HFh61Mb8QjP8+qrT/SRZtr5ORZ3 jh2KVEy8JTRkl+hFtwNv0jvEdE2gO3Uhy4U0S4mY1UefyCw2qvs2r6wtC34R8+u8BTnVhD8WUgUz 2fX6GDnHb9THo+49i75gfobHGPDE1B16TB3xB2SBxwG9iYTqgmAG7L88MMuSkqSQ8IF1WMZvOUJz KY8DyU/4a66qobstHCEqRo8d9OLAh305vPz+Y9hKxXmsSea1Sg2ZOl+Htg20l3Bml6zemclXwhmT mjFdCGnrATmBYl+wvTGaBIUtEMeFLeyQwlbHwVDFbEh7LtlG4kLdxgGQtklDW80eLm9/+3SnSR0s /+/u5VUmbHnhBzzR9At4RDg6Aw02hTyDjeYCcmLYqaul30rbZkoCdg4nMcWEOR8HCFSOwoU3A6dO Bp2wAhL6hKVGXpmwGkRrDTEMWdv1GpOUi6T4T8SOFikemUzaQOodsqn6ZMOG5d0N3tLykBcCOKiT TvKpBkt2FCgSEW6B48+xDAx89dpnUUx34PTQIxxa3uETJc/viF+pBctirxNYmK3n9nmbRbMtdB83 PFHxnIUcILwkUVG/QWHOEMPHsZzueEjeu7B4BXh+q2OtUUCgVo5MYHYV7bFgtlgipYB14L1ssjvz qpxXlZxy3sOezmKhNaXTceJZUxYpqiA1rer3718DZ3Af16eMY/6IJB5Rziyzqe7ft1KP93aozNe8 jqN4is3RvPqUqBAxifQg1NVri8DejvL02OhS+sofQRGvLViZGBKO5Z91dAS5z+EXUHCpUCXtRU8m IvJqcpWyFnG+i1yNxCf3QFJgcg6Zw1EuziOPGwkxhyuiiMxSQ93X4mDr/PLFImyX0mVF7bqwUTrr Be3SXyebxqG2Ukw9hOxksehgzIR2r7maDCLxGnYCsrPVmF2L65FVVaqqRyVcsVJ2bzF7/ydVOj78 VPoFIn6aRhEqAUyoXvtp5MkaDw/kO9Ap6Mm5TH1Ru7ZUmUSVZDf+BZL7pbEXufwHfu+DKOvFZSMM OltczmmMMKGrJBKD6igUcOJesuaeiqE+uebGF10C4Yi9d+HCewVddWLxBXpFLm9efXDgpUs6Os5o nPdaqgG90eD7I66sz/0chS4+E+Hzq7Cn8bTc7p3aZ4FMEmM76MtVKeS1xzI78Ol9ycpBSWinQhAQ AXwDhgEWGp1ZqtuzTwQnifivw7ApEwRwseR1J7oXZMZTHG0zPUV0iFNHIJEH9hnj6pFVM6A7L2T/ 3cMNDmy/HRuhVGDN/uB2xnZPrJ2ppF5PSl521lDf8FhfskHIWiUrl0usr3pBNvJSSbyHiu9gQJsj /pQRKtOim5CLk024Vguk4EoovmK7P62iGo+0YDreR9mT6QdnQQbNkPpB++zk1PUyIlrMsjbVK9db qdbr3zij7dOODNZEjp/UaFg6PCwdllCunDMO4SfqAd4hwnvJt/Bpvd6WIs8N4T1B9+e3ei6STrH4 76HTsoObvgNilv23Vovf/7BWXlnc/ziXNHn+t+0PzobuyduRyrZzqlour+Xx9z31u7Hn+mpbfWuD pPNDQ6sV8YwVWl0Rxsp0+JaLIDiTRNNSmCNFawfqB7/FOFzoMGa672k9k/aoUKpH0pTgfkf6WjSC QJrwG0yaga97uRubZMUBjwJj2dfo1CYPoneCy4THbXylW4RSJU6G3NqOyiJ4GEVzE1QZPdabBA2c J/DsBnTiZdefjfyB245wuEJXOYFCJr/I4QmrfxnP+TjKaMqoF2FZGRkE5kMPe1t3CUVEnNIhq1jO XINwjbg8GLd6hAKrBM6omE7Ls02sNY3FC1A9HdhFriJ38PStKn4f1JxNy8AmxqsN2P+EvyNP8uCs 3/J7bhtxoMgd6Q2sdHKKVlaNO6jKgB4U4ooNx4NRRHTHGbELOkXhG3jmVAM5vRsEPHhQQhTeRiON fy6vgoKB0XJgYOTukZmGg3kdu6cZFeO4jbGbZBSEQdSeoKC1B1A+xkMEqLbtP+H9BGaEzw/SdMor IRlcJIwJgroRDPaDNHUYsA11Fvr+6HbGziitPZ8hKIUiyTaJ6LcbSB3dMVYRMRdT+SANHdJ0vSZ/ 5NGK7mQT69im7zlk0DjmbCFJb9ITLvITZWnXIANukCnBU4qpxDQQNm4k93R8wM4qhq2REeRrKhgL AeH/5Px76PCOjGEfizpUWredMCWj2pDBH1CcUECOndopAXmDzmuE7/CgHK1UTXyhWYl1TtgXx3p8 lj7JFDrHo2Z/OHpjvF694PUoTXk9mnUGHXz6bZSse1q635h3YW0RkVztm+iqQnPkNAdxeVOHTksQ 2FPgXQiE4IXTQw966mcNmL6RUDCpEVBbLjlgwrChM5nT6MCIQVOx6AwMeeFtDzcJthB4ZvW6fKS3 7f2AzkqWdQ6691Ruq9Stj5iJqtRSoc4GfzJS/IlBOloq+vaANPBU6TirL4G4m1O0709lYeXa3FIV UuXPVTDouaNs6dAr5YW8yhF9hRthsnb0nD5sd3WRsTLRRLHEBadec8lLVWrf1LKrR3JOQxuS3zIa v1oy6P9EFRa2oJfOJStvXvByY/mcmjjXw2+YgNTY6yBmefjgPJ3IbSldQeVIupCywU8mkn+WSZKV lDcmUML9+4c7+9tNsmKaizIfc9td52RsDzvB1PU4POtNR8ukEYEwdE4R2INgKPgEt4vcbQfBGC8v EeZGiIdltY/m+9jKgSqI3LxlCen58D+aFiivEGRKuIzi8dBagE7zKuu4ZARnixSIUWAJ3NjzJ7wT 9YJ6Q7nb9gnRmU7gjRpCYtJ89ROaLCRcQGk0GvR/J9ggdLI21jw2NrT9IVKB7zv2sOei1AVest9h RAKftMcp4vsU6LS7K2fhNhUQg4XVxBlheyiu2dOhZ8DUkoiRFqD9jNZgBwQ6o7ci5CnDYIriwzCw DnfbK5B7tFiYbSUpiaEyzAwCommA4WKTsEbNRXmBKSNEG+5a5ljBSGbGYV+LvEa78SKU2rfAmW1f R23qaqXP0FqfZuAmLpVlKo8X9MYHRCbStsPwoH88JMMmfJkO4crEBaDvYFvcAPTh9CtWsaEkzdYC JUpSXMOqIOoJsDfCfxeLRTSExDgNJSZ1IztMhLKSCYYh/DOYQCcEoxabf7iFoOkXjMZ4nKfZx6Bi aCP708ttuuILViLZqUhXQX/mBfEaPV+MSc0rPExsFZtdjAozQQZGigLbIEKw7AYkioJetrtddmfR gDIEMIM3hGGELc4+HpFQghgdSQWw+Zg7FCSKi8G6sBCms9XLepU6NK49hXODCqYTtRCAhi/OIH/I 77CLgNkR6AZdaPIx3YfenjKxYYNktpEukdProLSAR0NHCFGnk9dLBODELbGDeAQQB9aQ7TqUhRHw LU3B8NSPp1xeelZ0RakchYdRURYW+7f2IIg2jYSWjJMnB2OHWLTh0SnzIYuaqCvTTx0EESb7qS0A WzJD62k2t/uFQmHmjzA9vVESTU//TfyPufCBDW/iT0s9nJqpFHs2JY/xFH/aUFr4ox4lc5aMnygd JjKa+VpE4vZETslXUpcXWaJev0oHRh2p1/l0+mEemoAzfJv2aZNChEX5Q5ov6LrcdT/KOTp5DAd6 5rAGKzKJ3nlE73TlghSOaJ8+6+RdvWjT6TdLY2wXfqQLAXCKsKwOA++wnm0qlcDbY7IRWQ2UZRTF Tkzqsg69LeWFBgCBi38oUOgeKNxD+8RJP0pUfIALdH8wxrC6Sg6ZeOqG5Jh7k6wA03NIohy8j4Be d/iWgLyKlGajga5H2aPmmcRUk8TIHrrIa6tUwss+2WO0ELhYFKa1+ve5LXS3mxL2X77uYp74T5Vy Av93rVpexH/MJV01/oPUQUEopGslfEJiQWsr2Vr1a3IpAu78HQqbmMjNqhTZgHllzWBGPCDbRCAJ dipg7Ef9Kl02IDcBWPylZZZJ9zsEPwt0RXO7oHuyNcOTaLVnL19829x/drC7v8ehbNpK4m6W0ym+ /0BsK66lCr3Rxe+lOr4+WbTg19jZPExkhUIgj9glKRNfq5gKO4iuBpNwQvodum4ZTSnw9V9Ln6iI O8ub5+FlYw0+wMQOzE1cPkaGS9iPby5ls666qyq5HJLsOV96bNyXkEj+a82ndDt1zML/Kyfi/1aq K2u/Uau3Q85k+sLlP41/zz+5rbHHdI3xX6nS+Fdrlepi/OeRovHHw7HbqYPueFirXTj+tdW1aPxB F4T5D88W+t88UvmKSW10VjrdjZpzr7q6DoNk29XWxr2O49TWO+3K+sZGtV1urdfW19A2N1R7qHDd P/PHX4liWITd2paqrNc2VjbKG/dW1d3ySrmckhjarMuQ6Lm6euKcMXR3+so1ttZb5Y32vXbHaVc3 yrVOq7XWXV934JNtr9kt2+lurK9WV6tXIK2Czg4maUwQHyh2foXaUDT/6Qj8Vuq4vvxfWVmtLOT/ PFJs/NkF4obruP7412orq4vxn0eaOv5sBLuxOq6//q+urVUX6/880mL9X6z/JQNa+TbqmDX/KyDz Y/v/9cri/qe5pJce2kZNOP+GRrjR1tKMwR4Z8n/Tl5kYt+r8CqfGF5Fo/t/e1p/SrPlfrq7H5n+1 vL7A/51LAq2vrhKq32I2fymJ5r/AiD/e2T347sU3N17HzPlfqcXtf6srC/1/LunXrd0u0qxE8//2 TH+UrmH/0et/DfX/hf3n9lM0/rdi+qN0Lfsfy//a+spi/OeR4uN/w6Y/SjPX/9VKbPxr6+XF+d9c 0lVtZwvl4NeZovk/sm/LCeT66//KSm3h/zOXROOPl2n+P9P/yrXF+M8jRePvfKSr/m6hjlnr/8pa Yv6vry7wn+eS+LK7XlBgcKpCgSEN4B/hhwK6GW8m2CR9Rz1FLPOkR/edDMXUCPQWOYh/jVBpeMs6 Oh+rvh9gxKXrqe18DI+DI1bwfiy+SxGvO6G7saRWjP4C9dQLVHZsQuX34ze3CwJlP1eHl5eLr337 CP/5aaHGxJIMbMf5eHt1zDz/K8f1/2ptfWH/m0va2X2+DX/+AP/He4Tgzx//pqzK6Sd/cfRPj/7Z +8e/ffOfT/7n3/7mr//3v3b/cPivDz6e/9U/VP/u93+5/i//sfbvf/T13//35yV/kX5hovnPkdy3 VsfM+b8Sv/+zurayWP/nkl4jgv8RAvXpo3y+/UBj2m8ymkrPIcjxTUU336VauMJvqq5NGCs9/8Tu 9TCQlLAVA53tc7dtkRZpkRZpkRZpkaan/wORQSDXAPAAAA== """ self.temp_dir_path = tempfile.mkdtemp(prefix=__name__) git_repo_tar_gz = base64.b64decode(git_repo_tar_gz_base64) with gzip.open(io.BytesIO(git_repo_tar_gz)) as gzipf: with TarFile(fileobj=io.BytesIO(gzipf.read())) as tf: for tfi in tf.getmembers(): target = os.path.join(self.temp_dir_path, tfi.name) if tfi.isreg(): with tf.extractfile(tfi) as tfd: with open(target, "wb") as f: f.write(tfd.read()) else: os.mkdir(target) def tearDown(self): if 12 <= sys.version_info.minor and "nt" == os.name: # workaround for the case time.sleep(1) shutil.rmtree(self.temp_dir_path, ignore_errors=True) else: # all others shutil.rmtree(self.temp_dir_path) @mock.patch("credsweeper.main.get_arguments") def test_git_n(self, mock_get_arguments) -> None: with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, "report.json") args_mock = Mock(log='warning', config_path=None, path=[self.temp_dir_path], git=None, ref=None, diff_path=None, error=False, json_filename=json_filename, xlsx_filename=None, subtext=False, hashed=False, sort_output=True, rule_path=None, jobs=1, no_filters=False, log_config_path=None, ml_threshold=0, ml_batch_size=16, ml_config=None, ml_model=None, ml_providers=None, pedantic=False, depth=0, doc=False, size_limit="1G", find_by_ext=False, denylist_path=None, severity=Severity.INFO.value) mock_get_arguments.return_value = args_mock self.assertEqual(EXIT_SUCCESS, main()) # no files in last commit self.assertFalse(os.path.exists(json_filename)) @mock.patch("credsweeper.main.get_arguments") def test_git_p(self, mock_get_arguments) -> None: with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, "report.json") args_mock = Mock(log='warning', config_path=None, path=None, git=self.temp_dir_path, ref="b7b09c8cdec2904dbb6f77eec2aa6abaef975252", diff_path=None, error=False, json_filename=json_filename, xlsx_filename=None, subtext=False, hashed=False, sort_output=True, rule_path=None, jobs=1, no_filters=False, log_config_path=None, ml_threshold=0, ml_batch_size=16, ml_config=None, ml_model=None, ml_providers=None, pedantic=False, depth=0, doc=False, size_limit="1G", find_by_ext=False, denylist_path=None, severity=Severity.INFO.value) mock_get_arguments.return_value = args_mock self.assertEqual(EXIT_SUCCESS, main()) empty_report_filename = os.path.join(tmp_dir, "report.b7b09c8cdec2904dbb6f77eec2aa6abaef975252.json") self.assertFalse(os.path.exists(empty_report_filename)) full_report_filename = os.path.join(tmp_dir, "report.9d3df94e8257240aa2b98dee47dc17992c0b7476.json") self.assertTrue(os.path.exists(full_report_filename)) full_report = Util.json_load(full_report_filename) self.assertLessEqual(1, len(full_report)) ================================================ FILE: tests/test_main.py ================================================ import io import logging import os import random import shutil import string import tempfile import unittest import uuid from argparse import ArgumentTypeError from pathlib import Path from tarfile import ReadError from typing import List, Any, Dict from unittest import mock from unittest.mock import Mock, patch, call, ANY import deepdiff # type: ignore import pandas as pd import pytest from credsweeper.app import APP_PATH, CredSweeper from credsweeper.common.constants import ThresholdPreset, Severity, MIN_DATA_LEN from credsweeper.file_handler.abstract_provider import AbstractProvider from credsweeper.file_handler.byte_content_provider import ByteContentProvider from credsweeper.file_handler.files_provider import FilesProvider from credsweeper.file_handler.string_content_provider import StringContentProvider from credsweeper.file_handler.text_content_provider import TextContentProvider from credsweeper.main import EXIT_FAILURE, main, EXIT_SUCCESS, get_arguments, positive_int, threshold_or_float_or_zero from credsweeper.utils.util import Util from tests import SAMPLES_FILTERED_COUNT, SAMPLES_POST_CRED_COUNT, SAMPLES_PATH, TESTS_PATH, SAMPLES_IN_DEEP_1, \ SAMPLES_IN_DEEP_3, SAMPLES_IN_DEEP_2, ZERO_ML_THRESHOLD, AZ_DATA, SAMPLE_HTML, SAMPLE_DOCX, SAMPLE_TAR, \ SAMPLE_PY, SAMPLES_FILES_COUNT from tests.data import DATA_TEST_CFG class TestMain(unittest.TestCase): def setUp(self): self.maxDiff = None def tearDown(self): pass def test_ml_validation_p(self) -> None: cred_sweeper = CredSweeper() self.assertEqual(ThresholdPreset.medium, cred_sweeper.ml_threshold) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_ml_validation_n(self) -> None: cred_sweeper = CredSweeper(ml_threshold=0) self.assertEqual(0, cred_sweeper.ml_threshold) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_use_filters_p(self) -> None: cred_sweeper = CredSweeper(use_filters=True) files_provider = [TextContentProvider(SAMPLES_PATH / "password_FALSE")] cred_sweeper.scan(files_provider) creds = cred_sweeper.credential_manager.get_credentials() self.assertEqual(0, len(creds)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_use_filters_n(self) -> None: cred_sweeper = CredSweeper(use_filters=False) files_provider = [TextContentProvider(SAMPLES_PATH / "password_FALSE")] cred_sweeper.scan(files_provider) creds = cred_sweeper.credential_manager.get_credentials() self.assertEqual(3, len(creds)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_rules_dub_n(self) -> None: with self.assertRaisesRegex(RuntimeError, r"Wrong rules 'None' were read from 'NotExistedPath'"): CredSweeper(rule_path="NotExistedPath") with tempfile.TemporaryDirectory() as tmp_dir: test_rules_file = os.path.join(tmp_dir, "test_rules.yaml") dub_rules = [{ "name": "TestRuleNameDub", "severity": "high", "confidence": "moderate", "type": "pattern", "min_line_len": 42, "values": ["(?P.*)"], "target": ["code"], }, { "name": "TestRuleNameDub", "severity": "high", "confidence": "moderate", "type": "pattern", "min_line_len": 42, "values": ["(?P.*)"], "target": ["code", "doc"], }] Util.yaml_dump(dub_rules, test_rules_file) with self.assertRaisesRegex(RuntimeError, r"Duplicated rule name TestRuleNameDub"): CredSweeper(rule_path=test_rules_file) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_rules_dub_p(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: test_rules_file = os.path.join(tmp_dir, "test_rules.yaml") dub_rules = [{ "name": "TestRuleNameDub", "severity": "high", "confidence": "moderate", "type": "pattern", "min_line_len": 42, "values": ["(?P.*)"], "target": ["code"], }, { "name": "TestRuleNameDub", "severity": "high", "confidence": "moderate", "type": "pattern", "min_line_len": 42, "values": ["(?P.*)"], "target": ["doc"], }] Util.yaml_dump(dub_rules, test_rules_file) self.assertIsNotNone(CredSweeper(rule_path=test_rules_file)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @mock.patch("credsweeper.main.scan", return_value=1) @mock.patch("credsweeper.main.get_arguments") def test_main_n(self, mock_get_arguments, mock_scan) -> None: args_mock = Mock(log='debug', path="mocked-scan", diff_path=None, error=True, json_filename=None, xlsx_filename=None, stdout=False, color=False, rule_path=None, jobs=1) mock_get_arguments.return_value = args_mock self.assertEqual(EXIT_FAILURE, main()) self.assertTrue(mock_scan.called) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @mock.patch("credsweeper.main.get_arguments") def test_main_path_p(self, mock_get_arguments) -> None: target_path = SAMPLES_PATH / "password.patch" with tempfile.TemporaryDirectory() as tmp_dir: args_mock = Mock(log='warning', path=None, config_path=None, diff_path=[str(target_path)], error=False, json_filename=Path(os.path.join(tmp_dir, f"{__name__}.json")), xlsx_filename=Path(os.path.join(tmp_dir, f"{__name__}.xlsx")), color=False, subtext=False, hashed=False, rule_path=None, jobs=1, ml_threshold=0, ml_batch_size=1, depth=0, doc=False, severity=Severity.INFO.value, size_limit="1G", denylist_path=None) mock_get_arguments.return_value = args_mock self.assertEqual(EXIT_SUCCESS, main()) self.assertTrue(os.path.exists(os.path.join(tmp_dir, f"{__name__}.xlsx"))) self.assertTrue(os.path.exists(os.path.join(tmp_dir, f"{__name__}.deleted.json"))) self.assertTrue(os.path.exists(os.path.join(tmp_dir, f"{__name__}.added.json"))) report = Util.json_load(os.path.join(tmp_dir, f"{__name__}.added.json")) self.assertTrue(report) self.assertEqual(3, report[0]["line_data_list"][0]["line_num"]) self.assertEqual("dkajco1", report[0]["line_data_list"][0]["value"]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @mock.patch("credsweeper.main.get_arguments") def test_binary_patch_p(self, mock_get_arguments) -> None: # test verifies case when binary diff might be scanned target_path = SAMPLES_PATH / "multifile.patch" with tempfile.TemporaryDirectory() as tmp_dir: args_mock = Mock(log='warning', path=None, config_path=None, diff_path=[str(target_path)], error=False, json_filename=os.path.join(tmp_dir, f"{__name__}.json"), xlsx_filename=None, subtext=False, hashed=False, sort_output=False, rule_path=None, jobs=1, ml_threshold=0, ml_batch_size=1, depth=9, doc=False, severity=Severity.INFO.value, size_limit="1G", denylist_path=None) mock_get_arguments.return_value = args_mock self.assertEqual(EXIT_SUCCESS, main()) self.assertTrue(os.path.exists(os.path.join(tmp_dir, f"{__name__}.deleted.json"))) self.assertTrue(os.path.exists(os.path.join(tmp_dir, f"{__name__}.added.json"))) report = Util.json_load(os.path.join(tmp_dir, f"{__name__}.added.json")) self.assertTrue(report) self.assertEqual(5, len(report)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @mock.patch("credsweeper.main.get_arguments") def test_report_p(self, mock_get_arguments) -> None: # verifies reports creations with tempfile.TemporaryDirectory() as tmp_dir: json_filename = os.path.join(tmp_dir, "report.json") xlsx_filename = os.path.join(tmp_dir, "report.xlsx") args_mock = Mock(log='warning', config_path=None, path=[str(SAMPLES_PATH)], diff_path=None, error=False, json_filename=json_filename, xlsx_filename=xlsx_filename, subtext=False, hashed=False, sort_output=True, rule_path=None, jobs=1, ml_threshold=0, ml_batch_size=16, ml_config=None, ml_model=None, ml_providers=None, pedantic=False, depth=0, doc=False, size_limit="1G", find_by_ext=False, denylist_path=None, severity=Severity.INFO) mock_get_arguments.return_value = args_mock self.assertEqual(EXIT_SUCCESS, main()) self.assertTrue(os.path.exists(xlsx_filename)) self.assertTrue(os.path.exists(json_filename)) report = Util.json_load(json_filename) self.assertTrue(report) self.assertEqual(SAMPLES_FILTERED_COUNT, len(report)) self.assertIn(str(SAMPLES_PATH), report[0]["line_data_list"][0]["path"]) self.assertTrue("info", report[0]["line_data_list"][0].keys()) for cred in report: for line_data in cred["line_data_list"]: # check correctness start-end position line = line_data["line"] value = line_data["value"] value_start = line_data["value_start"] value_end = line_data["value_end"] if 0 <= value_start and 0 <= value_end: self.assertEqual(value, line[line_data["value_start"]:line_data["value_end"]], cred) df = pd.read_excel(xlsx_filename) excel_report_delta_rows = 288 self.assertEqual(SAMPLES_FILTERED_COUNT + excel_report_delta_rows, len(df)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @mock.patch("argparse.ArgumentParser.parse_args") def test_parse_args_n(self, mock_parse) -> None: self.assertTrue(get_arguments()) self.assertTrue(mock_parse.called) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_positive_int_p(self): i = random.randint(1, 100) self.assertEqual(positive_int(i), i) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_positive_int_n(self): i = random.randint(-100, 0) with pytest.raises(ArgumentTypeError): positive_int(i) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_threshold_or_float_or_zero_p(self): f = random.random() self.assertEqual(f, threshold_or_float_or_zero(str(f))) self.assertIsInstance(threshold_or_float_or_zero('0'), int) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_threshold_or_float_or_zero_n(self): with pytest.raises(ArgumentTypeError): threshold_or_float_or_zero("DUMMY STRING") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_wrong_severity_n(self) -> None: with self.assertRaises(RuntimeError): CredSweeper(severity="wrong") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_scan_bytes_p(self) -> None: to_scan = b"line one\npassword='in_line_2'" cred_sweeper = CredSweeper() provider = ByteContentProvider(to_scan) results = cred_sweeper.file_scan(provider) self.assertEqual(1, len(results)) self.assertEqual("Password", results[0].rule_name) self.assertEqual("password", results[0].line_data_list[0].variable) self.assertEqual("in_line_2", results[0].line_data_list[0].value) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_scan_bytes_n(self) -> None: to_scan = "line one\npassword='in_line_2'".encode('utf-32') # unsupported cred_sweeper = CredSweeper() provider = ByteContentProvider(to_scan) results = cred_sweeper.file_scan(provider) self.assertEqual(0, len(results)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_colored_line_p(self) -> None: cred_sweeper = CredSweeper() for to_scan in ( "토큰MTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy사용".encode(), b'\x1b[93mMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy\x1b[0m', b'\r\nMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy\r\n', b'\tMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy\n', b'%3DMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy%3B', ): provider = ByteContentProvider(to_scan) results = cred_sweeper.file_scan(provider) self.assertEqual(1, len(results), to_scan) self.assertEqual("Jira / Confluence PAT token", results[0].rule_name) self.assertEqual("MTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy", results[0].line_data_list[0].value) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_string_content_provider_n(self) -> None: random.seed(42) ascii_chars = string.digits + string.ascii_letters + string.punctuation + ' ' text = ''.join(random.choice(ascii_chars) for _ in range(1 << 20)) # 1Mb dummy text cred_sweeper = CredSweeper() provider = StringContentProvider([text]) results = cred_sweeper.file_scan(provider) self.assertAlmostEqual(14, len(results), delta=7) # various lines may look like tokens # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_find_by_ext_and_not_ignore_p(self) -> None: # checks only exact match (may be wrong for windows) config_dict = Util.json_load(APP_PATH / "secret" / "config.json") self.assertTrue(config_dict) find_by_ext_list_items = config_dict["find_by_ext_list"] self.assertTrue(isinstance(find_by_ext_list_items, list)) find_by_ext_list_set = set(find_by_ext_list_items) self.assertTrue(len(find_by_ext_list_items) > 0) # check whether ignored extension does not exist in find_by_ext_list exclude_extension_items = config_dict["exclude"]["extension"] self.assertTrue(isinstance(exclude_extension_items, list)) extension_conflict = find_by_ext_list_set.intersection(exclude_extension_items) self.assertSetEqual(set(), extension_conflict) # check whether ignored container does not exist in find_by_ext_list exclude_containers_items = config_dict["exclude"]["containers"] self.assertTrue(isinstance(exclude_containers_items, list)) containers_conflict = find_by_ext_list_set.intersection(exclude_containers_items) self.assertSetEqual(set(), containers_conflict) # check whether extension and containers have no duplicates containers_extension_conflict = set(exclude_extension_items).intersection(exclude_containers_items) self.assertSetEqual(set(), containers_extension_conflict) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_multi_jobs_n(self) -> None: logging.getLogger().setLevel(level=logging.INFO) with tempfile.TemporaryDirectory() as tmp_dir: # one file will be sent to single job content_provider: AbstractProvider = FilesProvider([tmp_dir]) cred_sweeper = CredSweeper(pool_count=7) # empty dir returns nothing with patch('logging.Logger.info') as mocked_logger: cred_sweeper.run(content_provider=content_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) mocked_logger.assert_called_with("No scannable targets for %s paths", 1) # one dummy file without credentials with open(os.path.join(tmp_dir, "dummy"), "wb") as f: f.write(AZ_DATA) with patch('logging.Logger.info') as mocked_logger: cred_sweeper.run(content_provider=content_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) mocked_logger.assert_has_calls([ call("Scan for %s providers", 1), call("Completed: processed %s providers with %s candidates", 1, 0), call("Skip ML validation because no candidates were found"), call("Exporting %s credentials", 0) ]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_multi_jobs_p(self) -> None: logging.getLogger().setLevel(level=logging.INFO) # samples dir - many providers cred_sweeper = CredSweeper(pool_count=3) with patch('logging.Logger.info') as mocked_logger: cred_sweeper.run(content_provider=FilesProvider([SAMPLES_PATH])) mocked_logger.assert_has_calls([ call("Scan in %s processes for %s providers", 3, SAMPLES_FILES_COUNT - 23), call("Grouping %s candidates", SAMPLES_FILTERED_COUNT), ANY, # Run ML Validation for \d+ groups ANY, # initial ML with various arguments, cannot predict call("Exporting %s credentials", SAMPLES_POST_CRED_COUNT), ]) self.assertEqual(SAMPLES_POST_CRED_COUNT, cred_sweeper.credential_manager.len_credentials()) cred_sweeper.credential_manager.clear_credentials() self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) # each file as provider content_provider = FilesProvider([x for x in SAMPLES_PATH.glob("**/*")]) with patch('logging.Logger.info') as mocked_logger: cred_sweeper.run(content_provider=content_provider) mocked_logger.assert_has_calls([ call(f"Scan in %s processes for %s providers", 3, SAMPLES_FILES_COUNT - 23), call(f"Grouping %s candidates", SAMPLES_FILTERED_COUNT), ANY, # Run ML Validation for \d+ groups # no init call(f"Exporting %s credentials", SAMPLES_POST_CRED_COUNT), ]) self.assertEqual(SAMPLES_POST_CRED_COUNT, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_find_by_ext_n(self) -> None: # test for finding files by extension with tempfile.TemporaryDirectory() as tmp_dir: ext_list = [".pem", ".cer", ".csr", ".der", ".pfx", ".p12", ".key", ".jks"] for ext in ext_list: with open(os.path.join(tmp_dir, f"dummy{ext}"), "wb") as f: f.write(b'\x00' * MIN_DATA_LEN) with open(os.path.join(tmp_dir, f"short{ext}"), "wb") as f: f.write(b'\x00' * (MIN_DATA_LEN - 1)) with open(os.path.join(tmp_dir, f"dummy{ext}.bak"), "wb") as f: f.write(AZ_DATA) content_provider: AbstractProvider = FilesProvider([tmp_dir]) cred_sweeper = CredSweeper(find_by_ext=True) cred_sweeper.run(content_provider=content_provider) credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(len(ext_list), len(credentials)) self.assertTrue(all("Suspicious File Extension" == x.rule_name for x in credentials)) # aux checks - only 1/3 of all files will be found by extension test_files_number = len(os.listdir(tmp_dir)) self.assertEqual(len(ext_list), test_files_number // 3) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_tar_n(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLE_TAR]) cred_sweeper = CredSweeper(depth=0) cred_sweeper.run(content_provider=content_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_tar_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLE_TAR]) cred_sweeper = CredSweeper(depth=1) cred_sweeper.run(content_provider=content_provider) self.assertEqual(1, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_bad_tar_n(self) -> None: # test for bad tar - throws exception bad_tar_sample = SAMPLES_PATH / "bad.tar.bz2" content_provider: AbstractProvider = FilesProvider([bad_tar_sample]) cred_sweeper = CredSweeper(depth=2) with patch("logging.Logger.warning") as mocked_logger: cred_sweeper.run(content_provider=content_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) mocked_logger.assert_called_with("%s:%s", bad_tar_sample.as_posix()[:-4], ANY) args, _ = mocked_logger.call_args self.assertIsInstance(args[2], ReadError) self.assertEqual("unexpected end of data", str(args[2])) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_png_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "sample.png"]) cred_sweeper = CredSweeper(depth=3, pedantic=True) cred_sweeper.run(content_provider=content_provider) self.assertEqual(4, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_aws_multi_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "aws_multi.md"]) cred_sweeper = CredSweeper(ml_threshold=0, color=True, hashed=True) cred_sweeper.run(content_provider=content_provider) for i in cred_sweeper.credential_manager.get_credentials(): if "AWS Multi" == i.rule_name: self.assertEqual(7, i.line_data_list[0].line_num) self.assertEqual(8, i.line_data_list[1].line_num) break else: self.fail("AWS Multi was not found") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_depth_p(self) -> None: # test for finding files with --depth content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH]) cred_sweeper = CredSweeper(depth=1) cred_sweeper.run(content_provider=content_provider) self.assertEqual(SAMPLES_IN_DEEP_1, cred_sweeper.credential_manager.len_credentials()) cred_sweeper.config.depth = 2 cred_sweeper.run(content_provider=content_provider) self.assertEqual(SAMPLES_IN_DEEP_2, cred_sweeper.credential_manager.len_credentials()) cred_sweeper.config.depth = 3 cred_sweeper.run(content_provider=content_provider) self.assertEqual(SAMPLES_IN_DEEP_3, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_depth_n(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH]) cred_sweeper = CredSweeper(depth=0) cred_sweeper.run(content_provider=content_provider) self.assertEqual(SAMPLES_POST_CRED_COUNT, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_bzip2_p(self) -> None: # test for finding files by extension content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "pem_key.bz2"]) cred_sweeper = CredSweeper(depth=1) cred_sweeper.run(content_provider=content_provider) self.assertEqual(1, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_bzip2_n(self) -> None: with tempfile.TemporaryDirectory() as tmp_dir: test_filename = os.path.join(tmp_dir, __name__) self.assertFalse(os.path.exists(test_filename)) with open(test_filename, "wb") as f: f.write(b"\x42\x5A\x68\x35\x31\x41\x59\x26\x53\x59") content_provider: AbstractProvider = FilesProvider([test_filename]) cred_sweeper = CredSweeper(depth=1) with patch('logging.Logger.warning') as mocked_logger: cred_sweeper.run(content_provider=content_provider) mocked_logger.assert_called_with("%s:%s", test_filename, ANY) args, _ = mocked_logger.call_args self.assertIsInstance(args[2], ValueError) self.assertEqual("Compressed data ended before the end-of-stream marker was reached", str(args[2])) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_eml_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "test.eml"]) cred_sweeper = CredSweeper(doc=True, ml_threshold=ZERO_ML_THRESHOLD) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertLessEqual(1, len(found_credentials), found_credentials) self.assertEqual("PW: H1ddEn#ema1l", found_credentials[0].line_data_list[0].line) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_pdf_p(self) -> None: # may be tested with # https://www.dcc.edu/documents/administration/offices/information-technology/password-examples.pdf content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "sample.pdf"]) cred_sweeper = CredSweeper(depth=7, ml_threshold=ZERO_ML_THRESHOLD) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertSetEqual({"Password", "Token", "Github Classic Token"}, set(i.rule_name for i in found_credentials)) self.assertSetEqual( {"Xdj@jcN834b", "bace4d31-fa7e-beef-cafe-912947cbe28", "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"}, set(i.line_data_list[0].value for i in found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_pdf_n(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "sample.pdf"]) cred_sweeper = CredSweeper() cred_sweeper.run(content_provider=content_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_py_n(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLE_PY]) cred_sweeper = CredSweeper(severity=Severity.LOW, ml_threshold=0) cred_sweeper.run(content_provider=content_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_py_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLE_PY]) cred_sweeper = CredSweeper(severity=Severity.LOW, ml_threshold=0, depth=1) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() expected_credentials = [{ 'rul': 'API', 'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98', 'var': 'API_SECRET_KEY' }, { 'rul': 'API', 'val': 'a3f1ef0ff53236141253c0372', 'var': 'SECRET_CREDENTIAL_API_KEY' }, { 'rul': 'Auth', 'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98', 'var': 'AUTH_SECRET_NONCE' }, { 'rul': 'Auth', 'val': 'Hbr73gu7gdsr==', 'var': 'AUTH' }, { 'rul': 'Auth', 'val': 'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth', 'var': 'AUTH_CREDENTIAL_SECRET' }, { 'rul': 'Auth', 'val': '\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\r\\n', 'var': 'X_Auth_Tokens' }, { 'rul': 'Credential', 'val': 'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth', 'var': 'AUTH_CREDENTIAL_SECRET' }, { 'rul': 'Credential', 'val': 'a3f1ef0ff53236141253c0372', 'var': 'SECRET_CREDENTIAL_API_KEY' }, { 'rul': 'Key', 'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98', 'var': 'API_SECRET_KEY' }, { 'rul': 'Key', 'val': 'a3f1ef0ff53236141253c0372', 'var': 'SECRET_CREDENTIAL_API_KEY' }, { 'rul': 'Nonce', 'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98', 'var': 'AUTH_SECRET_NONCE' }, { 'rul': 'Password', 'val': '\\udf42\\ud834\\udd1e\\ud824\\ud837\\ud801\\ud852\\udf62', 'var': 'PASSWORD' }, { 'rul': 'Salt', 'val': '\\xdf42\\xd834\\xdd1E\\xd824\\xd837\\xd801\\xd852\\xdf62', 'var': 'SALT' }, { 'rul': 'Secret', 'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98', 'var': 'API_SECRET_KEY' }, { 'rul': 'Secret', 'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98', 'var': 'AUTH_SECRET_NONCE' }, { 'rul': 'Secret', 'val': 'R15br4jtfcFbWh9G7EZTb6jR12c9We', 'var': 'SECRET' }, { 'rul': 'Secret', 'val': 'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth', 'var': 'AUTH_CREDENTIAL_SECRET' }, { 'rul': 'Secret', 'val': 'a3f1ef0ff53236141253c0372', 'var': 'SECRET_CREDENTIAL_API_KEY' }, { 'rul': 'Token', 'val': '1102181139266001652353292050', 'var': 'TOKEN' }, { 'rul': 'Token', 'val': '\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\r\\n', 'var': 'X_Auth_Tokens' }] expected_credentials.sort(key=lambda x: (x["rul"], x["val"], x["var"])) actual_credentials = [ # { "rul": i.rule_name, "val": i.line_data_list[0].value, "var": i.line_data_list[0].variable } # for i in found_credentials ] actual_credentials.sort(key=lambda x: (x["rul"], x["val"], x["var"])) self.assertListEqual(expected_credentials, actual_credentials) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_json_p(self) -> None: # test for finding credentials in JSON content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "struct.json"]) cred_sweeper = CredSweeper(depth=5) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(1, len(found_credentials)) self.assertSetEqual({"Password"}, set(i.rule_name for i in found_credentials)) self.assertSetEqual({"Axt4T0eO0lm9sS=="}, set(i.line_data_list[0].value for i in found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_json_n(self) -> None: # test to prove that no credentials are found without depth content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "struct.json"]) cred_sweeper = CredSweeper() cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(0, len(found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_yaml_p(self) -> None: # test for finding credentials in YAML content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "binary.yml"]) cred_sweeper = CredSweeper(depth=5) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(2, len(found_credentials)) self.assertSetEqual({"Secret", "PEM Private Key"}, set(i.rule_name for i in found_credentials)) self.assertSetEqual({"we5345d0f3da48544z1t1e275y05i161x995q485", "-----BEGIN RSA PRIVATE KEY-----"}, set(i.line_data_list[0].value for i in found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_yaml_n(self) -> None: # test to prove that no credentials are found without depth content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "binary.yml"]) cred_sweeper = CredSweeper() cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(0, len(found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_encoded_p(self) -> None: # test for finding credentials in ENCODED data content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "encoded_data"]) cred_sweeper = CredSweeper(depth=5, ml_threshold=0, color=True, subtext=True) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(1, len(found_credentials)) self.assertSetEqual({"Token"}, set(i.rule_name for i in found_credentials)) self.assertEqual("gireogicracklecrackle1231567190113413981", found_credentials[0].line_data_list[0].value) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_docx_p(self) -> None: # test for finding credentials in docx content_provider: AbstractProvider = FilesProvider([SAMPLE_DOCX]) cred_sweeper = CredSweeper(doc=True) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() expected_credential_lines = { "second line bace4d11-a002-be1a-c3fe-9829474b5d84", "first_page_header bace4d11-f001-beea-c3fe-9829474b5d84", "2 Second page header bace4d19-b002-beda-cafe-0929375bcd82", "New page first line bace4d19-b001-b3e2-eac1-9129474bcd84", "Next page section bace4d19-c001-b3e2-eac1-9129474bcd84", "last page bace4d11-a003-be2a-c3fe-9829474b5d84", "First line bace4d11-a001-be1a-c3fe-9829474b5d84", "Default footer bace4119-f002-bdef-dafe-9129474bcd89", "next line in section bace4d19-c001-b3e2-eac1-9129474bcd84", "Third page header bace4d19-b003-beda-cafe-0929375bcd82", "Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881", "Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84", } found_lines_set = set(x.line_data_list[0].line for x in found_credentials) self.assertSetEqual(expected_credential_lines, found_lines_set) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_docx_n(self) -> None: # test docx - no credential should be found without 'doc' content_provider: AbstractProvider = FilesProvider([SAMPLE_DOCX]) cred_sweeper = CredSweeper(doc=False) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(0, len(found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_html_p(self) -> None: # test for finding credentials in html content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML]) cred_sweeper = CredSweeper(depth=5, ml_threshold=0, severity=Severity.LOW) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() expected_credential_lines = { "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "secret : Ndjbwu88s22ygavsdhgt5454v3h1x", "password : Cr3DeHTbIal", "password : 0dm1nk0", "password : p@$$w0Rd42", "secret : BNbNbws73bdhss329ssakKhds120384", "token : H72gsdv2dswPneHduwhfd", "td : Password: MU$T6Ef09#D!", "# 94 ya29.dshMb48ehfXwydAj34D32J", "# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "the line will be found twice # 100" " EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "ALTER\tUSER\tdetector\tIDENTIFIED\tBY\tSqLpa5sW0rD4;", } found_lines_set = set(x.line_data_list[0].line for x in found_credentials) self.assertSetEqual(expected_credential_lines, found_lines_set) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_html_n(self) -> None: # test_html - no credential should be found without 'depth' content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML]) cred_sweeper = CredSweeper(severity=Severity.LOW) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertListEqual([], found_credentials) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_exclude_value_p(self) -> None: cred_sweeper = CredSweeper(use_filters=True, exclude_values=["cackle!"]) files = [SAMPLES_PATH / "password.gradle"] files_provider = [TextContentProvider(file_path) for file_path in files] cred_sweeper.scan(files_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_exclude_value_n(self) -> None: cred_sweeper = CredSweeper(use_filters=True, exclude_values=["abc"]) files = [SAMPLES_PATH / "password.gradle"] files_provider = [TextContentProvider(file_path) for file_path in files] cred_sweeper.scan(files_provider) self.assertEqual(1, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_exclude_line_p(self) -> None: cred_sweeper = CredSweeper(use_filters=True, exclude_lines=['password = "cackle!"']) files = [SAMPLES_PATH / "password.gradle"] files_provider = [TextContentProvider(file_path) for file_path in files] cred_sweeper.scan(files_provider) self.assertEqual(0, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_exclude_line_n(self) -> None: cred_sweeper = CredSweeper(use_filters=True, exclude_lines=["abc"]) files = [SAMPLES_PATH / "password.gradle"] files_provider = [TextContentProvider(file_path) for file_path in files] cred_sweeper.scan(files_provider) self.assertEqual(1, cred_sweeper.credential_manager.len_credentials()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_doc_p(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML]) cred_sweeper = CredSweeper(doc=True, severity=Severity.LOW) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() expected_credential_values = { "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "ya29.dshMb48ehfXwydAj34D32J", "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "MU$T6Ef09#D!", "SqLpa5sW0rD4", } self.assertSetEqual(expected_credential_values, set(x.line_data_list[0].value for x in found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_doc_n(self) -> None: content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML]) cred_sweeper = CredSweeper(doc=False, severity=Severity.LOW) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertListEqual([], found_credentials) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_fallback_n(self) -> None: data_line = b''' ''' content_provider: AbstractProvider = FilesProvider([io.BytesIO(data_line)]) cred_sweeper = CredSweeper(doc=True, use_filters=False, ml_threshold=0, color=True) cred_sweeper.run(content_provider=content_provider) creds = cred_sweeper.credential_manager.get_credentials() self.assertListEqual([], creds) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_data_p(self) -> None: # the test modifies data/xxx.json with actual result - it discloses impact of changes obviously # use git diff to review the changes def prepare(report: List[Dict[str, Any]]): for x in report: # round ml_probability for macos ml_probability = x["ml_probability"] if isinstance(ml_probability, float): x["ml_probability"] = round(ml_probability, 3) for y in x["line_data_list"]: # update windows style path y["path"] = str(y["path"]).replace('\\', '/') y["info"] = str(y["info"]).replace('\\', '/') # use relative path to project y["path"] = str(y["path"]).replace(TESTS_PATH.as_posix(), './tests') y["info"] = str(y["info"]).replace(TESTS_PATH.as_posix(), './tests') x["line_data_list"].sort(key=lambda k: ( k["path"], k["line_num"], k["value"], k["info"], k["line"], k["value_start"], k["value_end"], )) report.sort(key=lambda k: ( k["line_data_list"][0]["path"], k["line_data_list"][0]["line_num"], k["line_data_list"][0]["value"], k["line_data_list"][0]["info"], k["line_data_list"][0]["value_start"], k["line_data_list"][0]["value_end"], k["severity"], k["rule"], k["ml_probability"], )) # instead the config file is used for cfg in DATA_TEST_CFG: with tempfile.TemporaryDirectory() as tmp_dir: expected_report = TESTS_PATH / "data" / cfg["json_filename"] expected_result = Util.json_load(expected_report) # informative parameter, relative with other tests counters. CredSweeper does not know it and fails cred_count = cfg.pop("__cred_count") prepare(expected_result) tmp_file = Path(tmp_dir) / cfg["json_filename"] # apply the current path to keep equivalence in path content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH]) # replace output report file to place in tmp_dir cfg["json_filename"] = str(tmp_file) cred_sweeper = CredSweeper(**cfg) cred_sweeper.run(content_provider=content_provider) test_result = Util.json_load(tmp_file) prepare(test_result) # use the same dump as in output Util.json_dump(test_result, tmp_file) diff = deepdiff.DeepDiff(test_result, expected_result) if diff: # prints produced report to compare with present data in tests/data print(f"Review updated {cfg['json_filename']} with git.", flush=True) shutil.copy(tmp_file, expected_report) # first run fails with the diff but next run will pass self.assertDictEqual({}, diff, cfg) # only count of items must be corrected manually self.assertEqual(cred_count, len(expected_result), cfg["json_filename"]) # check whether all files are real on disk for i in test_result: for j in i["line_data_list"]: f = SAMPLES_PATH / Path(j["path"]).parts[-1] self.assertTrue(f.exists(), (f, j)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_param_n(self) -> None: # internal parametrized tests for quick debug - no itms should be found items = [ # ("x.json", b'"": "\\u0230n0tAdr0PbX"'), ("any", b'secret = "mysecret"'), ("t.h", b'#define TOKEN "q1111119-fade-1111-c3f0-9129474bcd81"'), # ("t.h", b"#define SECRET 0x0200"), # ('test.m', b's password=$$getTextValue^%dmzAPI("pass",sessid)'), ('test.yaml', b'password: Fd[q#pX+@4*r`1]Io'), ('enc.yaml', b'password: ENC[qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy]'), ('enc.yaml', b'password: "ENC[qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy]"'), ('enc.yml', b'password: ENC(qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy)'), ('enc.yml', b'password: "ENC(qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy)"'), ('x3.txt', b'passwd = values[token_id]'), ('t.py', b'new_params = {"dsn": new_params["dsn"], "password": new_params["password"]}'), ('t.m', b'@"otpauth://host/port?set=VNMXQKAZFVOYOJCDNBIYXYIWX2&algorithm=F4KE",'), ("test.c", b" *keylen = X448_KEYLEN;"), ("test.php", b"$yourls_user_passwords = $copy;"), ("", b"passwords = List"), ("test.template", b" API_KEY_ID=00209332 "), # ("test.template", b" AUTH_API_KEY_NAME='temporally_secret_api' "), # ("pager.ts", b"pagerLimitKey: 'size',"), # ("pager.rs", b' this_circleci_pass_secret_id="buratino-circle-pass"'), # ("pager.rs", b' secret_type: "odobo".to_string(),'), # ("pager.rs", b" secret_key: impl AsRef, "), # ("pager.rs", b"token: impl AsRef,"), # ("pager.rs", b" let tokens = quote::quote! {"), # ("pager.rs", b" let cert_chain = x509_rx"), # ("my.kt", b'val password: String? = null'), # ] content_provider: AbstractProvider = FilesProvider([(file_name, io.BytesIO(data_line)) for file_name, data_line in items]) cred_sweeper = CredSweeper() cred_sweeper.run(content_provider=content_provider) creds = cred_sweeper.credential_manager.get_credentials() self.assertEqual(0, len(creds), [x.to_json(False, False) for x in creds]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_param_p(self) -> None: # internal parametrized tests for quick debug items = [ # ("any", b"Authorization: token 944fb17dc1ca18eb2750b6238e5c5ad27b68aaab", "Authorization", "944fb17dc1ca18eb2750b6238e5c5ad27b68aaab"), ("any", b'Authorization: NTLM TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=', "Authorization", "TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=" ), ("p.txt", b'PASSWORD=$ADrn1N?', "PASSWORD", "$ADrn1N?"), ("x.x", b"'token' : 'access_token=1f3a1d0x579bedc83419f39c06a71L01'", "access_token", "1f3a1d0x579bedc83419f39c06a71L01"), ("ba.sh", b'if [ "$DB_URL" != "mi6://james:bond#007@localhost:32768/api" ]; then', "mi6://", "bond#007"), ("t.h", b'#define TOKEN "q2d45d19-fade-1111-c3f0-9129474bcd81"', "TOKEN", "q2d45d19-fade-1111-c3f0-9129474bcd81"), # ("k.java", b"private static final long[] KEY = {0x9e37f3a21d0c18e9L, 0x579b9f39cc06a7c1L, 0x057f45cedc834108L, 0xf86c6a1276b27251L};", "KEY", "0x9e37f3a21d0c18e9L, 0x579b9f39cc06a7c1L, 0x057f45cedc834108L, 0xf86c6a1276b27251L"), ("k.c", b'static const unsigned char key[] = {0,007, 0x65, 0x72, 0x73, 0x74, 999, 0x61 /* comment */};', "key[]", "0,007, 0x65, 0x72, 0x73, 0x74, 999, 0x61 /* comment */"), ("c.go", b'Credential: []byte{351, 266, ,1,2,7,4,010, 100, 114, 157},', "Credential", "351, 266, ,1,2,7,4,010, 100, 114, 157"), ("pw.java", b'"--keystore-password", "WL3XSnGShS87KW",', "keystore-password", "WL3XSnGShS87KW"), ("pw.py", b'["--password", "XCl5oOtGO9SP"]', "password", "XCl5oOtGO9SP"), ("pw.html", b'user%3Dadmin;pw%3DjakC5df5G4WL;', "pw", "jakC5df5G4WL"), ("pw.py", b'pw=env.get("PASSWORD", "Qj5lo7nYV"))', "pw", "Qj5lo7nYV"), ("p.h", b'.SetPassword("mHic7SmwL7lkn0")', "Password", "mHic7SmwL7lkn0"), ("pw.h", b'#define key {0x35, 0x34, 0x65, 0x9b, 0x72, 0x73, 0x1c, 0x2e}', "key", "0x35, 0x34, 0x65, 0x9b, 0x72, 0x73, 0x1c, 0x2e"), ("scrts.cs", b'Secrets = new[] { new Secret( "be31IjWLD2rSh6D0H430hg3".Sha256() ) },', "Secrets", "be31IjWLD2rSh6D0H430hg3"), ("pw.md", b"The login password => skWu850", "password", "skWu850"), # ("log.txt", b'Authorization: SSWS 00QEi8-WW0HmCjAl4MlVjFx-vbGPXMD8sWXsua', "Authorization", "00QEi8-WW0HmCjAl4MlVjFx-vbGPXMD8sWXsua"), ('test.yaml', b'code\u003epassword: "Fd[q#pX+@4*r`1]Io"', 'password', 'Fd[q#pX+@4*r`1]Io'), ("any", b'docker swarm join --token qii7t1m6423127xto389xc914l34451qz5135865564sg', 'token', 'qii7t1m6423127xto389xc914l34451qz5135865564sg'), ("win.log", b'java -Password $(ConvertTo-SecureString "P@5$w0rD!" -AsPlainText -Force)', "ConvertTo-SecureString", "P@5$w0rD!"), ('tk.java', b' final OAuth2AccessToken accessToken = new OAuth2AccessToken("7c9yp7.y513e1t629w7e8f3n1z4m856a05o");', "OAuth2AccessToken accessToken", "7c9yp7.y513e1t629w7e8f3n1z4m856a05o"), ('my.toml', b'{nkey: XMIGDHSYNSJQ0XNR}', "nkey", "XMIGDHSYNSJQ0XNR"), ('my.yaml', b'%3Epassword: "3287#JQ0XX@IG}"', "password", "3287#JQ0XX@IG}"), ("creds.py", b'"tokens": ["xabsjh1dbasu7d9g", "ashbjhd1ifufhsds"]', "tokens", "xabsjh1dbasu7d9g"), ("slt.py", b'\\t\\tsalt = "\\x187bhgerjhqw\\n iKa\\tW_R~0/8"', "salt", "\\x187bhgerjhqw\\n iKa\\tW_R~0/8"), ("log.txt", b'json\\nAuthorization: Basic jfhlksadjiu9813ryiuhdfskadjlkjh34\\n\\u003c/code\\u003e\\u003c/pre\\u003e"', "Authorization", "jfhlksadjiu9813ryiuhdfskadjlkjh34"), ("pwd.html", b'password => "ji3_8iKgaW_R~0/8"', "password", "ji3_8iKgaW_R~0/8"), ("pwd.py", b'password = "/_tcTz None: # random generated value in well quoted value may be any (almost) chromium ... password_generator.cc safe_chars = [x for x in string.digits + string.ascii_letters + string.punctuation if x not in '"\\01OIol'] value = ''.join(random.choice(safe_chars) for _ in range(15)) line = f'password = "{value}"' content_provider: AbstractProvider = FilesProvider([("cred.go", io.BytesIO(line.encode()))]) cred_sweeper = CredSweeper(ml_threshold=0) cred_sweeper.run(content_provider=content_provider) creds = cred_sweeper.credential_manager.get_credentials() self.assertEqual(1, len(creds), line) self.assertEqual("password", creds[0].line_data_list[0].variable) self.assertEqual(value, creds[0].line_data_list[0].value) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_hashed_n(self) -> None: # checks whether hashed hides raw data from report test_values = list(str(uuid.uuid4()) for _ in range(7)) with tempfile.TemporaryDirectory() as tmp_dir: test_filename = os.path.join(tmp_dir, f"{__name__}.yaml") with open(test_filename, 'w') as f: for x in test_values: f.write(f"{x}\n") json_filename = os.path.join(tmp_dir, f"{__name__}.json") cred_sweeper = CredSweeper(json_filename=json_filename, hashed=True) cred_sweeper.run(FilesProvider([test_filename])) report = Util.json_load(json_filename) # UUID is detected self.assertAlmostEqual(len(report), 7, delta=3) # random uuid may be filtered with a pattern # but does not contain in report file for x in test_values: self.assertNotIn(x, str(report)) ================================================ FILE: tests/test_utils/__init__.py ================================================ ================================================ FILE: tests/test_utils/dummy_line_data.py ================================================ import re from typing import Optional from credsweeper.app import APP_PATH from credsweeper.config.config import Config from credsweeper.credentials.line_data import LineData from credsweeper.utils.util import Util from tests.filters.conftest import LINE_VALUE_PATTERN def config() -> Config: config_dict = Util.json_load(APP_PATH / "secret" / "config.json") config_dict["use_filters"] = True config_dict["find_by_ext"] = False config_dict["pedantic"] = False config_dict["depth"] = 0 config_dict["doc"] = False config_dict["size_limit"] = None return Config(config_dict) def get_line_data(test_config: Config = config(), file_path: str = "", line: str = "", pattern: Optional[re.Pattern] = None) -> LineData: pattern = re.compile(pattern) if pattern else re.compile(LINE_VALUE_PATTERN) line_data = LineData(test_config, line, 0, 1, file_path, Util.get_extension(file_path), "info", pattern) assert line_data.value # most important member for filters return line_data ================================================ FILE: tests/utils/__init__.py ================================================ ================================================ FILE: tests/utils/test_hop_stat.py ================================================ import unittest from credsweeper.utils.hop_stat import HopStat class TestHopStat(unittest.TestCase): def test_hop_stat_n(self): HopStat() with self.assertRaises(ValueError): HopStat().stat('34') with self.assertRaises(ValueError): HopStat().stat('1') with self.assertRaises(ValueError): HopStat().stat('1') def test_hop_stat_p(self): self.assertTupleEqual((1, 0), HopStat().stat("qwerty")) ================================================ FILE: tests/utils/test_util.py ================================================ import binascii import hashlib import os import random import string import tempfile import unittest from pathlib import Path from xmlrpc.client import MAXINT from hypothesis import given, strategies from lxml.etree import XMLSyntaxError from credsweeper.common.constants import Chars, DEFAULT_ENCODING, UTF_8, MAX_LINE_LENGTH, CHUNK_STEP_SIZE, CHUNK_SIZE, \ OVERLAP_SIZE, UTF_16_LE from credsweeper.utils.util import Util from tests import AZ_DATA, AZ_STRING, SAMPLES_PATH class TestUtils(unittest.TestCase): KOREAN_PANGRAM = "키스의 고유조건은 입술끼리 만나야 하고 특별한 기술은 필요치 않다." DEUTSCH_PANGRAM = "Üben von Xylophon und Querflöte ist ja zweckmäßig" PKCS1 = """ MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3 sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kU LftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZv yQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8i IAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K /ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvX LFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ """ PKCS8 = """ MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAvX+EmO24xuNtVejr BhPVLGJE46/CB99VK84CTlo3Z3jBhMLbmTeySV+l3DG+SOHiIYHr+oL7RFuaIvBp dpBPQQIDAQABAkB4CVDLNrq3cdUOeG53+RQt+0m8GNeF+RiQmPyo+UjjR2f9OfB7 qbLB+XLqE68CfhNEGycH8SWfqEkuYKsO9m/JAiEA9/tSZrj8CqCjPdJ8/LP1NpBf IPklILd6Ptw4ftveGBMCIQDDoBiFz9QqHyIgA9gYrXkiZWZcCXGaEUPrEJbH1txN 2wIhAOKo5rJZlpYoKc0SHYfk/Nb4stqyn0r+KVBXfZQGZ0PdAiBtp9AXMeg7tDfs ujrnmlXMcgpujNyhAAySNzpNyqKzAQIgG9csWPmOQ2ziJKqmFmjx4hJR2iX/1mj9 2SscLjWRtgk= """ PKCS8_CHANGEME = """ MIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIT0gWHcAV1rACAggA MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBaZ0qE6fJsz9rDPoa2esruBIIB YF9QvKgDLA15MgXR8P73DRdrDJzEEoYe7bDtk+vnTzy6DNVwSfkgQLNLpKfnjPO3 b1szG5md06Fai6Tuuc9kKDhaCWfGgw/xAeb4OEjWupyCUvmyWYBNqCC+DDQZb7cc ka4cuIRV7Ty0I/3AdGCZ/g4mDBozjtfLkLOvWzRuKXQYvGlPYd0HUWupKn2Sgduy rwKt43zq0j+t9UXMMFVYv7RZOzZruVcUkBKHoYDkgOl9OQ5tGE+atfhLZUVUKj4Q 7F+o6mlTy0JHxv94oUadDXJCyzivdes2RxabPDJ+1gEfNW8ZRZtselC+Pdy+KBIt Ln3f3FEWXpWbNPRzhElOUUaNgRNOQrmxoE09QxWLt8L3soArRfWe732Nw7N9izpU uKmL72bzbpetDQu/sn49CEnWcFGCZQ9inSiEogF0e2ncxnKfthRKzpT3K5JGiqcM mbcMoz5WjLks//PgWcZ/l2o= """ PKCS12 = """ MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/ AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAj/aKWRTdH5 CwICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEMGS8BBALDKdaLIFg5sofxKAggIQCtTT Q1PuFM7/QKiTMphxz9RLR+cYwdD/MMZsE4DbNiIt3jMbirbNW+QeEyN6wH+HH2H358pqsN3/8e40 K0FDHvLsfs8eWkqtmPK4e6MYX/Iz5MxZqMxaJNpSoOmdSJYPJdBUf6X1Cc5r0Fe0j50DNGPYazQS Xik2U4v5ekvLIDNm9cRMcLOaF/Nf4qB1wMSrBWCMk75Nm1zllHyIuimCchNe04m3Rmpa2VXVSn3Q Zjp5b8QyY5K8Wz15gQAfuQWEu9hrh/qsVpISR2R492BDS3FY7cwvubjGgIxVH7V8B3noch4YENS2 dlmQMWsJcOuhg8LTrRIyyzLJicP9O3VN9qF6jR++YBxekV56D54KjEeultUdpiD0Eqt3A5vUZyyY hWcPEzFEI+CgM7mrvgDHtrRqzr8WHwiuho6tsgrwlhDCvOxcF/cSjBcfwJiB4gJxtlMjCYdEq256 KBU9Vq3kCKYglF4lwA5F498UZqgojx/t3vzLRGK3qp6ffXVPvcxZGjZjtfDwuY/rxYZfsrcsXdSS w8X6OA0AcDzxTFdSuRAdtb/xdA9rj+n4tLFIn1smDBSCAbxC1hcV5XLVfkU+75SjCHY7TjK9bChx IhMXJZFmX8JJF+B8PEtzkx/3mn+n/kWiEKPsWIerVVe1LqX/JWlMLucpKnGPKEXTUxmAc3Z8SFI0 kK0UIp04crqq6DRnMIICOwYJKoZIhvcNAQcBoIICLASCAigwggIkMIICIAYLKoZIhvcNAQwKAQKg ggHBMIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIan4Jz+bein0CAggAMAwGCCqG SIb3DQIJBQAwHQYJYIZIAWUDBAEqBBCulAkqt2DLDD1aGAzE3ik1BIIBYI1yRnH3viudZ1k4tZgr ZijphnGvc4nlX8J0ImrH4Dqr90RKT7ZDFQldqr7XHsNwjpR6qGjkGu2xVS40AeBxFBsi5mDNMRcM LgZKBQNh8C+CXxkatdvC33hZ2EJ7JzEL3ejdZwzOCvjQpqfxQPLgFFTRQOMZnBXx0nn9QLoJ8HJG 8/QJ31aqrhDPEX64s3xhCBa0FLI34AoTpF2nDVTHt+v+1wakFdki4ABC9X0QgCAUYHf7OYZG7b7A 7RNYb0LUyX5OEYERi5oUkC4dh9qB250+3CG1mKk1WRpR147XWA25RTsF2/q42anrPR4c1/3DFlE5 YtHx875SrGwxV9DRJytP6rum+b8nKxv91J7LbUUWBV5qX2cms2itPHSlNg1BhsnYtuMmKo1flIid BAhuhpAiCmj8myFTUQ3cJ4lfGNrFz225guZFIPElTxl9S9GmHX3KdUTDb8S8jqfOfFGkTs8xTDAj BgkqhkiG9w0BCRUxFgQUGY0PlBhhh6+fjx21HWim3e+syDowJQYJKoZIhvcNAQkUMRgeFgBlAHgA YQBtAHAAbABlAC4AYwBvAG0wQTAxMA0GCWCGSAFlAwQCAQUABCBmjoy3EmwmDqVl9ZwnqndJ0Sf3 M1I223wax4Fje1dkegQIrDjD/AWVwj4CAggA """ PKCS12_CHANGEME = """ MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/ AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAhknVwZ/8XA BAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEECI9IqqZ3J6xUKkiXcNZCaGAggIQrWgd iM7DBZIyAS6mocBSb/giKZLPMq23x1nZNdf4mkjEk2nLjNbtA09n8d/2FxBvFKLQfxZfxtq76Hza TlCvVz8PhcGPhHumOXUAzBtT3Mv4WDmub/1pAZsjInN6K+CCQlb7tPLy8OlHHHP5HYET6LXUUy1R cslDJNJdb9YDlhjhFOoGgd7fApnFAwsjQDjNVT/DCnuQQHrSylezYZP6HM4Sf7INrdbHviJU/K0A c1hBDXrndhaOWEGnaKXknycIZqN0HgftdUjiujPhI0XdIE008U+6hxibTe/Okdn6URlmOtbuXOFQ FYO7nAN8wOW2/n1nZSQkZflV7P0+Vq2Ce4tfCUCyj+pJuuKygGA6D4gUoY74N4LGjDHvzjY00f5h tdQ3WRAXcuG1zsORsjOhRB8Ag5tKOYCMQF9GMhFQfhZwg07zaZS7dU8fyvIPFYSAynr7Uef6GMkv Zyw8DF6dku4X/Jgm/h9b7jb7x289hjowUYVYZ7/+KQPdH2Pj68BrUxtFFc118W1P1FE4huYe11Kf RBgGy2NugCCPkExKfQrFPRM32hGd+2AMTrfpVoBkY1Dj4IKwEKIufSTnyvtl+MIMB2cwumD/A/IV ksr9qV7ptfwuZl1pzqkZIUAoVgDs8gqul/YOT9g0QWydP/Vwh30v/6RAmwAEUhTydhag2fP5JQgu oVQXcHPYgYfIqjf+MIICOwYJKoZIhvcNAQcBoIICLASCAigwggIkMIICIAYLKoZIhvcNAQwKAQKg ggHBMIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIA0VVM4PAVxMCAggAMAwGCCqG SIb3DQIJBQAwHQYJYIZIAWUDBAEqBBA5WjHZFqFYRnvekUsb7V82BIIBYG5T1b/dWIkUslM7f7tm Qy4vPlOeFDZv5U437Af9ZfrseIAiPXPXKUsQubwme2PH5cZQYV3AZY/6INPfSrhNw+feHGeSAYRm jugB8vEfaTV0Lml6MPi+sn+SaBGLYDNYRv8i4fb+V/cgUMGvVpMMKhDBiGrjjmC4d/R/asEcD3Gh JSerfECS1pg/CWckL8l86jwF+DbX90+xe1ReJ4c/64bnQzRbRKTQdu7bIbAuZjfbBd8a3zsRawmH 9uIE4RYNN9wHOSarwzKCT5JYMVBHv/tXqpxT12Z9z1sovAATo6JHIJ8x9qvmw3Yv7q20Vt5s/h8O 8RiFefJS8hWd0gX85oTpOO2mww0NmbPgH0At2VHPItK5HA4pM5/qPjSp0netZoaKrdJypSbMJfAj G99FmZgp3MLQYphYRbM6g7RhWCeW4mM6pvqrk6YKWBsMKPQPnLD25pMfrnjR0LG0FnEClQ8xTDAj BgkqhkiG9w0BCRUxFgQUGY0PlBhhh6+fjx21HWim3e+syDowJQYJKoZIhvcNAQkUMRgeFgBlAHgA YQBtAHAAbABlAC4AYwBvAG0wQTAxMA0GCWCGSAFlAwQCAQUABCBb+Q7hc25Mh35RU/6qtG8NxT87 qGEE8yzsqZzIOG9iogQIO3wdxp2pvhECAggA """ def test_asn1_n(self): self.assertEqual(0, Util.get_asn1_size(b'0\x84\x01\x00\x00\x00' + b'\xA5' * (1 << 24 - 1))) self.assertEqual(0, Util.get_asn1_size(b'0\x83\x01\x00\x00' + b'\xA5' * (65536 - 1))) self.assertEqual(0, Util.get_asn1_size(b'0\x82\xFF\xFF' + b'\xA5' * (65535 - 1))) self.assertEqual(0, Util.get_asn1_size(b'0\x8F' + b'\xFF' * 200)) self.assertEqual(0, Util.get_asn1_size(b'0\x82' + b'\xFF' * 200)) self.assertEqual(0, Util.get_asn1_size(b'0\x81' + b'\xFF' * 200)) self.assertEqual(0, Util.get_asn1_size(b'0\x80' + b'\xFF' * 200)) self.assertEqual(0, Util.get_asn1_size(b'0\x0fabcdef')) self.assertEqual(0, Util.get_asn1_size(b'0\x01')) self.assertEqual(0, Util.get_asn1_size(b'')) based_data = self.PKCS1 data = Util.decode_base64(based_data) self.assertEqual(0, Util.get_asn1_size(data[:-1])) def test_asn1_p(self): self.assertEqual(16777222, Util.get_asn1_size(b'0\x84\x01\x00\x00\x00' + b'\xA5' * (1 << 24))) self.assertEqual(65541, Util.get_asn1_size(b'0\x83\x01\x00\x00' + b'\xA5' * 65536)) self.assertEqual(65539, Util.get_asn1_size(b'0\x82\xFF\xFF' + b'\xA5' * 65535)) self.assertEqual(4, Util.get_asn1_size(b'0\x81\x01abcdef')) self.assertEqual(8, Util.get_asn1_size(b'0\x80abcd\000\000')) self.assertEqual(3, Util.get_asn1_size(b'0\x01abcdef')) self.assertEqual(2, Util.get_asn1_size(b'0\x00')) data = Util.decode_base64(self.PKCS1) self.assertEqual(318, Util.get_asn1_size(data)) over_data = bytearray(data) + random.randbytes(200) self.assertEqual(318, Util.get_asn1_size(over_data)) def test_get_extension_n(self): self.assertEqual("", Util.get_extension(None)) self.assertEqual("", Util.get_extension("/")) self.assertEqual("", Util.get_extension("/tmp")) self.assertEqual("", Util.get_extension("tmp")) self.assertEqual("", Util.get_extension("tmp/")) self.assertEqual("", Util.get_extension(".gitignore")) self.assertEqual("", Util.get_extension("/tmp/.hidden")) self.assertEqual("", Util.get_extension("/tmp.ext/")) self.assertEqual("", Util.get_extension("http://127.0.0.1/index")) def test_get_extension_p(self): self.assertEqual(".ext", Util.get_extension("tmp.ext")) self.assertEqual(".jpg", Util.get_extension("tmp.JPG")) self.assertEqual(".ї", Util.get_extension("tmp.Ї", lower=True)) self.assertEqual(".Ї", Util.get_extension("tmp.Ї", lower=False)) self.assertEqual(".♡", Util.get_extension("tmp.♡")) self.assertEqual(".ㅋㅅ", Util.get_extension("tmp.ㅋㅅ")) self.assertEqual(".ß", Util.get_extension("tmp.ß")) self.assertEqual(".txt", Util.get_extension("/.hidden.tmp.txt")) def test_colon_os_n(self): self.assertEqual("", Util.get_extension(":memory:")) self.assertEqual(".ext", Util.get_extension("c:\\tmp.ext")) self.assertEqual(".json", Util.get_extension("c:\\tmp.ext:zip:text.json")) self.assertEqual(".json", Util.get_extension("/tmp.ext:zip:text.json")) self.assertEqual(".json:encoded", Util.get_extension("c:\\tmp.ext:zip:text.json:ENCODED")) self.assertEqual(".json:raw", Util.get_extension("/tmp.ext:zip:text.json:raw")) with tempfile.TemporaryDirectory() as tmp_dir: file_name = os.path.join(tmp_dir, "test_file.zip") Path(file_name).touch() assert os.path.exists(file_name) new_name = f"{file_name}:ZIP:dummy.txt" assert not os.path.exists(new_name) @given(strategies.binary()) def test_get_shannon_entropy_hypothesis_n(self, data): self.assertLessEqual(0.0, Util.get_shannon_entropy(data)) def test_get_shannon_entropy_n(self): self.assertEqual(0, Util.get_shannon_entropy(None)) self.assertEqual(0, Util.get_shannon_entropy('')) self.assertEqual(0, Util.get_shannon_entropy('x')) self.assertEqual(0, Util.get_shannon_entropy('♡')) self.assertEqual(0, Util.get_shannon_entropy(b'\0')) def test_get_shannon_entropy_p(self): self.assertEqual(1.0, Util.get_shannon_entropy("01")) self.assertEqual(1.0, Util.get_shannon_entropy("ÖЇ")) self.assertEqual(1.0, Util.get_shannon_entropy("ㅋㅅ")) self.assertEqual(4.431965045349459, Util.get_shannon_entropy(AZ_STRING)) self.assertEqual(4.385453417442482, Util.get_shannon_entropy(AZ_STRING.lower())) self.assertEqual(4.385453417442482, Util.get_shannon_entropy(AZ_STRING.upper())) self.assertEqual(3.321928094887362, Util.get_shannon_entropy(string.digits)) self.assertEqual(3.321928094887362, Util.get_shannon_entropy(string.ascii_uppercase[:10])) self.assertEqual(6.0, Util.get_shannon_entropy(Chars.BASE64STD_CHARS.value)) self.assertEqual(6.0, Util.get_shannon_entropy(Chars.BASE64URL_CHARS.value)) self.assertEqual(6.0223678130284535, Util.get_shannon_entropy(Chars.BASE64URLPAD_CHARS.value)) self.assertEqual(6.643856189774724, Util.get_shannon_entropy(string.printable)) self.assertEqual(6.62935662007961, Util.get_shannon_entropy(string.printable[:-1])) self.assertEqual(6.62935662007961, Util.get_shannon_entropy(string.printable[1:])) def test_util_read_file_n(self): with tempfile.TemporaryDirectory() as tmp_dir: assert os.path.isdir(tmp_dir) file_path = os.path.join(tmp_dir, 'test_util_read_file_p.tmp') # required binary write mode with open(file_path, "wb") as tmp_file: tmp_file.write(AZ_DATA) assert os.path.isfile(file_path) # CP1026 incompatible with ASCII but encodes something test_result = Util.read_file(file_path, [1, 'fake', 'undefined', 'utf_16', 'utf_32', 'CP1026']) assert 1 == len(test_result) assert len(AZ_STRING) == len(test_result[0]) assert AZ_STRING != test_result[0] def test_util_read_file_p(self): with tempfile.TemporaryDirectory() as tmp_dir: assert os.path.isdir(tmp_dir) file_path = os.path.join(tmp_dir, 'test_util_read_file_p.tmp') # required binary write mode with open(file_path, "wb") as tmp_file: tmp_file.write(AZ_DATA) assert os.path.isfile(file_path) # windows might accept oem test_result = Util.read_file(file_path, ['oem', 'utf_8']) assert 1 == len(test_result) assert AZ_STRING == test_result[0] def test_util_read_utf8_bin_p(self): IOOOOOOO = int('10000000', 2) IOIIIIII = int('10111111', 2) IIOOOOOO = int('11000000', 2) IIIOOOOO = int('11100000', 2) IIIIOOOO = int('11110000', 2) IIIIIOOO = int('11111000', 2) bin_text = bytearray() n = 65536 while 0 < n: bin_char = bytearray() r = random.randint(1, 255) if 128 > r: bin_char.append(r) elif IIOOOOOO == (IIIOOOOO & r): bin_char.append(r) bin_char.append(random.randint(IOOOOOOO, IOIIIIII)) elif IIIOOOOO == (IIIIOOOO & r): bin_char.append(r) bin_char.append(random.randint(IOOOOOOO, IOIIIIII)) bin_char.append(random.randint(IOOOOOOO, IOIIIIII)) elif IIIIOOOO == (IIIIIOOO & r): bin_char.append(r) bin_char.append(random.randint(IOOOOOOO, IOIIIIII)) bin_char.append(random.randint(IOOOOOOO, IOIIIIII)) bin_char.append(random.randint(IOOOOOOO, IOIIIIII)) else: continue try: utf8_char = bin_char.decode('utf-8') encoded_bin = utf8_char.encode('utf-8') if bin_char != encoded_bin: # print (f"Wrong refurbish:{utf8_char} {bin_char} {encoded_bin}") continue except UnicodeError: continue # the byte sequence is correct for UTF-8 and is added to data bin_text += bin_char n -= 1 with tempfile.TemporaryDirectory() as tmp_dir: assert os.path.isdir(tmp_dir) file_path = os.path.join(tmp_dir, 'test_util_read_utf8_bin_p.tmp') with open(file_path, "wb") as tmp_file: tmp_file.write(bin_text) assert os.path.isfile(file_path) read_lines = Util.read_file(file_path) decoded_lines = Util.decode_bytes(bin_text) assert 0 < len(read_lines) assert decoded_lines == read_lines def test_util_read_utf16le_bin_p(self): bin_text = bytearray() bin_text += bytes([0xff, 0xfe]) # BOM LE n = 65536 while 0 < n: bin_char = bytearray() try: bin_char.append(random.randint(0, 255)) bin_char.append(random.randint(0, 255)) utf16_char = bin_char.decode('utf-16-le') encoded_bin = utf16_char.encode('utf-16-le') if bin_char != encoded_bin: # print (f"Wrong refurbish:{utf16_char} {bin_char} {encoded_bin}") continue except UnicodeError: continue # the byte sequence is correct for UTF-16-LE and is added to data bin_text += bin_char n -= 1 if 0 == n % 32: bin_char.append(0x0a) bin_char.append(0x00) with tempfile.TemporaryDirectory() as tmp_dir: assert os.path.isdir(tmp_dir) file_path = os.path.join(tmp_dir, 'test_util_read_utf16le_bin_p.tmp') with open(file_path, "wb") as tmp_file: tmp_file.write(bin_text) assert os.path.isfile(file_path) read_lines = Util.read_file(file_path) test_lines = Util.decode_bytes(bin_text) assert 0 < len(read_lines) assert read_lines == test_lines def test_util_read_utf16le_txt_p(self): unicode_text = "" n = 65536 while 0 < n: try: unicode_char = chr(random.randint(0, 0x10FFFF)) encoded_bin = unicode_char.encode('utf-16-le') utf16_char = encoded_bin.decode('utf-16-le') if unicode_char != utf16_char: # print(f"Wrong refurbish:{unicode_char} {encoded_bin} {utf16_char}") continue except UnicodeError: continue # the byte sequence is correct for UTF-16-LE and is added to data unicode_text += unicode_char n -= 1 if 0 == n % 32: unicode_text += '\n' with tempfile.TemporaryDirectory() as tmp_dir: assert os.path.isdir(tmp_dir) file_path = os.path.join(tmp_dir, 'test_util_read_utf16le_bin_p.tmp') with open(file_path, "wb") as tmp_file: tmp_file.write(bytes([0xff, 0xfe])) # BOM LE tmp_file.write(unicode_text.encode('utf-16-le')) assert os.path.isfile(file_path) read_lines = Util.read_file(file_path) test_lines = Util.decode_bytes(bytes([0xff, 0xfe]) + unicode_text.encode('utf-16-le')) assert 0 < len(read_lines) assert read_lines == test_lines def test_util_read_utf16be_txt_p(self): unicode_text = "" n = 65536 while 0 < n: try: unicode_char = chr(random.randint(0, 0x10FFFF)) encoded_bin = unicode_char.encode('utf-16-be') utf16_char = encoded_bin.decode('utf-16-be') if unicode_char != utf16_char: # print (f"Wrong refurbish:{unicode_char} {encoded_bin} {utf16_char}") continue except UnicodeError: continue # the byte sequence is correct for UTF-16-BE and is added to data unicode_text += unicode_char n -= 1 if 0 == n % 32: unicode_text += '\n' with tempfile.TemporaryDirectory() as tmp_dir: assert os.path.isdir(tmp_dir) file_path = os.path.join(tmp_dir, 'test_util_read_utf16le_bin_p.tmp') with open(file_path, "wb") as tmp_file: tmp_file.write(bytes([0xfe, 0xff])) # BOM BE tmp_file.write(unicode_text.encode('utf-16-be')) assert os.path.isfile(file_path) read_lines = Util.read_file(file_path, ['utf-16-be', 'undefined']) test_bytes = bytes([0xfe, 0xff]) + unicode_text.encode('utf-16-be') test_lines = Util.decode_bytes(test_bytes, ['utf-16-be', 'undefined']) assert 0 < len(read_lines) assert read_lines == test_lines def test_decode_text_n(self): self.assertIsNone(Util.decode_text(None)) self.assertEqual('', Util.decode_text(b'')) def test_decode_text_p(self): self.assertEqual('BE', Util.decode_text(b'\0B\0E')) self.assertEqual('LE', Util.decode_text(b'L\0E\0')) self.assertEqual('BE', Util.decode_text(b'\xFE\xFF\0B\0E')) self.assertEqual('LE', Util.decode_text(b'\xFF\xFEL\0E\0')) data = AZ_STRING.encode("utf_16") self.assertTrue(data.startswith(b'\xFF') or data.startswith(b'\xFE'), data) # platform dependent self.assertEqual(AZ_STRING, Util.decode_text(data)) def test_is_binary_n(self): with self.assertRaises(AttributeError): self.assertFalse(Util.is_binary(None)) self.assertFalse(Util.is_binary(b'')) self.assertFalse(Util.is_binary(self.DEUTSCH_PANGRAM.encode(UTF_8))) self.assertFalse(Util.is_binary(b"\x7Ffew unprintable letters\x00")) self.assertFalse(Util.is_binary(self.KOREAN_PANGRAM.encode(UTF_8))) # some binaries may be false negatives self.assertFalse(Util.is_binary(b'!' * MAX_LINE_LENGTH + b"\0\0\0\0")) def test_is_binary_p(self): # two zeroes sequence is a marker of a binary self.assertTrue(Util.is_binary(b"\0\0")) self.assertTrue(Util.is_binary(b"X3\0\0")) # unsupported encoding has 3 zeroes self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_32"))) self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_32_le"))) self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_32_be"))) def test_is_latin1_n(self): # standard UTF-16 encoding is not recognized as Latin1 self.assertFalse(Util.is_latin1(self.DEUTSCH_PANGRAM.encode(UTF_16_LE))) # standard UTF-8 encoding is not recognized as Latin1 for Hangul self.assertFalse(Util.is_latin1(self.KOREAN_PANGRAM.encode(UTF_8))) # random data should be not recognized as Latin1 self.assertFalse(Util.is_latin1(random.randbytes(MAX_LINE_LENGTH))) def test_is_latin1_p(self): # standard UTF-8 encoding is recognized as Latin1 even with null-terminator self.assertTrue(Util.is_latin1((self.DEUTSCH_PANGRAM + '\0').encode(UTF_8))) # obsolete encoding may be recognized as Latin1 self.assertTrue(Util.is_latin1(self.KOREAN_PANGRAM.encode("euc_kr"))) # 0x1B ESCAPE code in log self.assertTrue(Util.is_latin1(b"PASSWORD=2IWJD88FH4Y;")) def test_is_ascii_entropy_validate_p(self): self.assertTrue(Util.is_ascii_entropy_validate(b'')) self.assertTrue(Util.is_ascii_entropy_validate(AZ_DATA)) # remove all spaces to make a variable name az_data = AZ_DATA.replace(b' ', b'') # 35 bytes self.assertTrue(Util.is_ascii_entropy_validate(az_data)) hangul_pangram_data = self.KOREAN_PANGRAM.encode(UTF_8) self.assertTrue(Util.is_ascii_entropy_validate(hangul_pangram_data)) hanja_data = "漢字能力檢定試驗".encode(UTF_8) self.assertEqual(24, len(hanja_data)) self.assertTrue(Util.is_ascii_entropy_validate(hanja_data)) def test_is_ascii_entropy_validate_n(self): various_lang_data = "수도 首都 Hauptstadt".encode(UTF_8) self.assertEqual(24, len(various_lang_data)) self.assertFalse(Util.is_ascii_entropy_validate(various_lang_data)) decoded_like_base64 = Util.decode_base64(f"{AZ_STRING}=") self.assertFalse(Util.is_ascii_entropy_validate(decoded_like_base64)) for random_data_len in range(16, 40): data = random.randbytes(random_data_len) # VERY RARELY IT MIGHT FAIL self.assertFalse(Util.is_ascii_entropy_validate(data), data) def test_read_bin_file_n(self): with tempfile.TemporaryDirectory() as tmp_dir: self.assertTrue(os.path.isdir(tmp_dir)) file_path = os.path.join(tmp_dir, 'test_read_data_p') with open(file_path, "wb") as f: f.write(AZ_DATA) data = Util.read_data(file_path) self.assertEqual(AZ_DATA, data) def test_read_data_n(self): self.assertIsNone(Util.read_data(os.path.join("not", "existed", "path"))) @given(strategies.text()) def test_split_text_n(self, text): self.assertLessEqual(0, len(Util.split_text(text))) def test_get_xml_data_p(self): target_path = str(SAMPLES_PATH / "xml_password.xml") xml_lines = Util.read_data(target_path).decode().splitlines(True) result = Util.get_xml_from_lines(xml_lines) self.assertEqual( ( [ "Countries : ", # "Country : ", # "City : Seoul", # "password : cackle!", # "Country : ", # "City : Kyiv", # "password : peace_for_ukraine", # "password : Password for authorization\n" " BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81", # ], [2, 3, 4, 5, 7, 8, 9, 11]), result) def test_get_xml_data_n(self): target_path = str(SAMPLES_PATH / "bad.xml") lines = Util.read_file(target_path) with self.assertRaises(XMLSyntaxError): Util.get_xml_from_lines(lines) def test_json_load_p(self): with tempfile.TemporaryDirectory() as tmp_dir: self.assertTrue(os.path.isdir(tmp_dir)) file_path = os.path.join(tmp_dir, __name__) with open(file_path, "wb") as f: f.write(b'{}') data = Util.json_load(file_path) self.assertIsInstance(data, dict) with open(file_path, "wb") as f: f.write(b'[]') data = Util.json_load(file_path) self.assertIsInstance(data, list) with open(file_path, "wb") as f: f.write(b'"' + AZ_DATA + b'"') data = Util.json_load(file_path) self.assertIsInstance(data, str) self.assertEqual(AZ_STRING, data) rand_int = random.randint(-100, 100) with open(file_path, "wb") as f: f.write(str(rand_int).encode()) data = Util.json_load(file_path) self.assertIsInstance(data, int) self.assertEqual(rand_int, data) rand_float = rand_int / 3.14 with open(file_path, "wb") as f: f.write(str(rand_float).encode()) data = Util.json_load(file_path) self.assertIsInstance(data, float) self.assertEqual(rand_float, data) with open(file_path, "wb") as f: f.write(b'true') data = Util.json_load(file_path) self.assertIsInstance(data, bool) self.assertTrue(data) with open(file_path, "wb") as f: f.write(b'null') data = Util.json_load(file_path) self.assertIsNone(data) def test_json_load_n(self): self.assertIsNone(Util.json_load("not_existed_path")) with tempfile.TemporaryDirectory() as tmp_dir: self.assertTrue(os.path.isdir(tmp_dir)) file_path = os.path.join(tmp_dir, __name__) with open(file_path, "wb") as f: f.write(AZ_DATA) self.assertIsNone(Util.json_load(file_path)) def test_json_dump_p(self): with tempfile.TemporaryDirectory() as tmp_dir: self.assertTrue(os.path.isdir(tmp_dir)) file_path = os.path.join(tmp_dir, __name__) rand_int = random.randint(-1000000, 1000000) test_dict = {"dummy_int": rand_int, "dummy_str": AZ_STRING} Util.json_dump(test_dict, file_path=file_path, indent=None) with open(file_path, "rb") as f: self.assertEqual( b'{"dummy_int": ' + str(rand_int).encode(DEFAULT_ENCODING) + b', "dummy_str": "' + AZ_DATA + b'"}', f.read()) Util.json_dump(test_dict, file_path=file_path, encoding='utf-16', indent=None) with open(file_path, "rb") as f: read_data = f.read() expected_data = \ b'\xff\xfe{\x00"\x00d\x00u\x00m\x00m\x00y\x00_\x00i\x00n\x00t\x00"\x00:\x00 \x00' \ + str(rand_int).encode('utf-16')[2:] + \ b',\x00 \x00"\x00d\x00u\x00m\x00m\x00y\x00_\x00s\x00t\x00r\x00"\x00:\x00 \x00' \ b'"\x00T\x00h\x00e\x00 \x00q\x00u\x00i\x00c\x00k\x00 \x00b\x00r\x00o\x00w\x00n\x00 \x00' \ b'f\x00o\x00x\x00 \x00j\x00u\x00m\x00p\x00s\x00 \x00o\x00v\x00e\x00r\x00 \x00t\x00h\x00e\x00 ' \ b'\x00l\x00a\x00z\x00y\x00 \x00d\x00o\x00g\x00"\x00}\x00' self.assertEqual(expected_data, read_data) expected_text = f'{{"dummy_int": {rand_int}, "dummy_str": "{AZ_STRING}"}}' read_text = read_data.decode(encoding='utf-16') self.assertEqual(expected_text, read_text) def test_json_dump_n(self): with tempfile.TemporaryDirectory() as tmp_dir: self.assertTrue(os.path.isdir(tmp_dir)) file_path = os.path.join(tmp_dir, __name__) test_bytes = AZ_DATA Util.json_dump(test_bytes, file_path=file_path, encoding=DEFAULT_ENCODING) with open(file_path, "rb") as f: self.assertEqual(0, len(f.read())) def test_parse_py_p(self): result = Util.parse_python("""password = \ "Hello" \ ' World!'""") self.assertIsInstance(result, list) self.assertListEqual(["password = 'Hello World!'"], result) def test_parse_py_n(self): # empty self.assertFalse(Util.parse_python("")) # wrong syntax with self.assertRaises(SyntaxError): Util.parse_python(""""Hello World!"""") with self.assertRaises(SyntaxError): Util.parse_python("""{'wrong': ': '"\." is syntax warning'}""") def test_decode_base64_p(self): self.assertTrue(Util.parse_python("""regexa=r'\.'""")) self.assertEqual(AZ_DATA, Util.decode_base64("VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==")) self.assertEqual(b"\xFF\xFF\xFF", Util.decode_base64("////")) self.assertEqual(b"\xFB\xEF\xBE", Util.decode_base64("++++")) self.assertEqual(b"\xFF\xFF\xFF", Util.decode_base64("____", urlsafe_detect=True)) self.assertEqual(b"\xFB\xEF\xBE", Util.decode_base64("----", urlsafe_detect=True)) self.assertEqual(b"\xFF\xFE", Util.decode_base64("//4", padding_safe=True)) self.assertEqual(b"\xFF\xFE", Util.decode_base64("__4", padding_safe=True, urlsafe_detect=True)) self.assertEqual(b"kibana", Util.decode_base64("a2liYW5h=", padding_safe=True)) def test_decode_base64_n(self): with self.assertRaises(binascii.Error): Util.decode_base64("VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw") with self.assertRaises(binascii.Error): Util.decode_base64("-_+_-", padding_safe=True, urlsafe_detect=True) with self.assertRaises(binascii.Error): Util.decode_base64("/** ! */", urlsafe_detect=True) with self.assertRaises(binascii.Error): Util.decode_base64("-----BEGIN+++++", urlsafe_detect=True) with self.assertRaises(binascii.Error): Util.decode_base64("____") with self.assertRaises(binascii.Error): Util.decode_base64("----") def test_get_chunks_n(self): self.assertGreater(MAX_LINE_LENGTH, CHUNK_SIZE) self.assertGreater(CHUNK_SIZE, OVERLAP_SIZE) self.assertGreater(CHUNK_STEP_SIZE, OVERLAP_SIZE) # wrong cases which should not appear due line length is checked before self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(0)) self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(42)) self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(CHUNK_STEP_SIZE)) self.assertListEqual([(0, CHUNK_SIZE), (CHUNK_STEP_SIZE, CHUNK_SIZE)], Util.get_chunks(CHUNK_SIZE)) self.assertListEqual([(0, CHUNK_SIZE), (CHUNK_STEP_SIZE, MAX_LINE_LENGTH)], Util.get_chunks(MAX_LINE_LENGTH)) with self.assertRaises(Exception): Util.get_chunks(None) def test_get_chunks_p(self): line_length = 42 + MAX_LINE_LENGTH self.assertListEqual( # [ # (0, CHUNK_SIZE), # (CHUNK_STEP_SIZE, line_length), # ], # Util.get_chunks(line_length)) line_length = 2 * MAX_LINE_LENGTH self.assertListEqual( # [ # (0, CHUNK_SIZE), # (1 * CHUNK_STEP_SIZE, CHUNK_SIZE + CHUNK_STEP_SIZE), # (2 * CHUNK_STEP_SIZE, CHUNK_SIZE + 2 * CHUNK_STEP_SIZE), # (3 * CHUNK_STEP_SIZE, line_length), # ], # Util.get_chunks(line_length)) line_length = 3 * MAX_LINE_LENGTH + 42 self.assertListEqual( # [ # (0, CHUNK_SIZE), # (1 * CHUNK_STEP_SIZE, CHUNK_SIZE + CHUNK_STEP_SIZE), # (2 * CHUNK_STEP_SIZE, CHUNK_SIZE + 2 * CHUNK_STEP_SIZE), # (3 * CHUNK_STEP_SIZE, CHUNK_SIZE + 3 * CHUNK_STEP_SIZE), # (4 * CHUNK_STEP_SIZE, CHUNK_SIZE + 4 * CHUNK_STEP_SIZE), # (5 * CHUNK_STEP_SIZE, CHUNK_SIZE + 5 * CHUNK_STEP_SIZE), # (6 * CHUNK_STEP_SIZE, line_length), # ], # Util.get_chunks(line_length)) def test_get_chunks_coverage_n(self): line_len = MAX_LINE_LENGTH while 7 * MAX_LINE_LENGTH > line_len: line_len += random.randint(1, OVERLAP_SIZE) data = bytearray(line_len) chunks = Util.get_chunks(line_len) for start, end in chunks: for i in range(start, end): data[i] += 1 self.assertNotIn(0, data) # overlapped items should be passed not more than twice self.assertGreaterEqual(2, max(data)) def test_subtext_n(self): self.assertEqual("", Util.subtext("", 0, 0)) self.assertEqual("", Util.subtext(' ' * 42, 0, 0)) def test_subtext_p(self): self.assertEqual(100, len(string.printable)) self.assertEqual("0123456789abcdefghij", Util.subtext(string.printable, 10, 10)) self.assertEqual("0123456789abcdefghij", Util.subtext(string.printable, 9, 10)) self.assertEqual(")*+,-./:;<=>?@[\\]^_`", Util.subtext(string.printable, 80, 10)) self.assertEqual("-./:;<=>?@[\\]^_`{|}~", Util.subtext(string.printable, 84, 10)) self.assertEqual("-./:;<=>?@[\\]^_`{|}~", Util.subtext(string.printable, 95, 10)) self.assertEqual("var=value0123456789;", Util.subtext(" var=value0123456789; ", 35, 10)) self.assertEqual(AZ_STRING, Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 1 + len(AZ_STRING) >> 1)) self.assertEqual("x jump", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 3)) self.assertEqual("ox jumps", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 4)) self.assertEqual("fox jumps", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 5)) self.assertEqual("fox jumps ov", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 6)) self.assertEqual("The quick", Util.subtext(AZ_STRING, 0, 5)) self.assertEqual("The quick", Util.subtext(AZ_STRING, 3, 5)) self.assertEqual("fox jumps", Util.subtext(AZ_STRING, AZ_STRING.find("jumps"), 5)) self.assertEqual("e lazy dog", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 5)) self.assertEqual("the lazy dog", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 6)) self.assertEqual(AZ_STRING[:39], Util.subtext(AZ_STRING, 15, 20)) self.assertEqual(AZ_STRING[-40:], Util.subtext(AZ_STRING, 33, 20)) def test_get_excel_column_name_n(self): self.assertFalse(Util.get_excel_column_name(None)) self.assertFalse(Util.get_excel_column_name(-1)) self.assertFalse(Util.get_excel_column_name(3.14)) def test_get_excel_column_name_p(self): self.assertEqual("A", Util.get_excel_column_name(0)) self.assertEqual("AQ", Util.get_excel_column_name(42)) self.assertEqual("CS", Util.get_excel_column_name(96)) self.assertEqual("AAA", Util.get_excel_column_name(702)) self.assertEqual("XFD", Util.get_excel_column_name(16383)) self.assertEqual("FXSHRXX", Util.get_excel_column_name(MAXINT)) def test_load_pk_n(self): self.assertIsNone(Util.load_pk(None, None)) self.assertIsNone(Util.load_pk(b'', None)) self.assertIsNone(Util.load_pk(b'', b'')) self.assertIsNone(Util.load_pk(AZ_DATA, None)) self.assertIsNone(Util.load_pk(AZ_DATA, b'')) def test_load_pk_p(self): pkcs1der = Util.decode_base64(self.PKCS1) self.assertEqual("c12d4fd541ccd981066ad72d953a3e0d", hashlib.md5(pkcs1der).hexdigest()) pkcs1pk = Util.load_pk(pkcs1der, None) self.assertIsNotNone(pkcs1pk) pkcs8der = Util.decode_base64(self.PKCS8) pkcs8pk = Util.load_pk(pkcs8der, None) self.assertIsNotNone(pkcs8pk) pkcs8changeme = Util.decode_base64(self.PKCS8_CHANGEME) pkcs8pk_changeme = Util.load_pk(pkcs8changeme, b'changeme') self.assertIsNotNone(pkcs8pk_changeme) pkcs12der = Util.decode_base64(self.PKCS12) pkcs12pk = Util.load_pk(pkcs12der, None) self.assertIsNotNone(pkcs12pk) pkcs12changeme = Util.decode_base64(self.PKCS12_CHANGEME) pkcs12pk_changeme = Util.load_pk(pkcs12changeme, b'changeme') self.assertIsNotNone(pkcs12pk_changeme) def test_check_pk_n(self): self.assertFalse(Util.check_pk(None)) def test_check_pk_p(self): pkcs1der = Util.decode_base64(self.PKCS1) self.assertTrue(Util.check_pk(Util.load_pk(pkcs1der)))