credsweeper 1.13.1__tar.gz → 1.13.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of credsweeper might be problematic. Click here for more details.
- {credsweeper-1.13.1 → credsweeper-1.13.2}/PKG-INFO +1 -1
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/__init__.py +1 -1
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/abstract_scanner.py +1 -0
- credsweeper-1.13.2/credsweeper/deep_scanner/csv_scanner.py +71 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/deep_scanner.py +6 -2
- {credsweeper-1.13.1 → credsweeper-1.13.2}/.gitignore +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/LICENSE +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/README.md +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/__main__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/app.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/common/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/common/constants.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/common/keyword_checklist.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/common/keyword_checklist.txt +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/common/keyword_pattern.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/common/morpheme_checklist.txt +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/config/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/config/config.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/augment_candidates.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/candidate.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/candidate_group_generator.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/candidate_key.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/credential_manager.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/line_data.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/byte_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/bzip2_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/deb_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/docx_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/eml_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/encoder_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/gzip_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/html_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/jclass_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/jks_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/lang_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/lzma_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/mxfile_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/patch_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/pdf_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/pkcs_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/pptx_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/rpm_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/rtf_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/sqlite3_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/strings_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/tar_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/tmx_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/xlsx_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/xml_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/deep_scanner/zip_scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/abstract_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/analysis_target.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/byte_content_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/content_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/data_content_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/descriptor.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/diff_content_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/file_path_extractor.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/files_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/patches_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/string_content_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/struct_content_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/text_content_provider.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/filter.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/general_keyword.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/general_pattern.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/group.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/password_keyword.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/token_pattern.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/url_credentials_group.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/weird_base36_token.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/weird_base64_token.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/line_git_binary_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/line_specific_key_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/line_uue_part_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_allowlist_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_array_dictionary_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_atlassian_token_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_azure_token_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_base32_data_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_base64_data_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_base64_encoded_pem_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_base64_key_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_base64_part_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_basic_auth_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_blocklist_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_camel_case_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_dictionary_keyword_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_discord_bot_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_entropy_base32_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_entropy_base36_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_entropy_base64_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_entropy_base_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_file_path_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_github_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_grafana_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_grafana_service_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_hex_number_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_jfrog_token_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_json_web_key_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_json_web_token_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_last_word_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_length_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_method_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_morphemes_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_not_allowed_pattern_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_not_part_encoded_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_number_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_pattern_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_similarity_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_split_keyword_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_string_type_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_token_base32_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_token_base36_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_token_base64_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_token_base_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_token_check.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/logger/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/logger/logger.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/entropy_evaluation.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/feature.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/file_extension.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/has_html_tag.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/is_secret_numeric.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/length_of_attribute.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/morpheme_dense.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/rule_name.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/rule_severity.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/search_in_attribute.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_path.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_postamble.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_preamble.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_transition.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_value.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_variable.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/ml_config.json +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/ml_model.onnx +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/ml_validator.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/py.typed +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/rules/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/rules/config.yaml +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/rules/rule.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/scanner/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/scanner/scan_type/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/scanner/scan_type/multi_pattern.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/scanner/scan_type/pem_key_pattern.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/scanner/scan_type/scan_type.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/scanner/scan_type/single_pattern.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/scanner/scanner.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/secret/config.json +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/secret/log.yaml +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/utils/__init__.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/utils/hop_stat.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/utils/pem_key_detector.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/utils/util.py +0 -0
- {credsweeper-1.13.1 → credsweeper-1.13.2}/pyproject.toml +0 -0
|
@@ -51,6 +51,7 @@ class AbstractScanner(ABC):
|
|
|
51
51
|
@abstractmethod
|
|
52
52
|
def get_deep_scanners(data: bytes, descriptor: Descriptor, depth: int) -> Tuple[List[Any], List[Any]]:
|
|
53
53
|
"""Returns possibly scan methods for the data depends on content and fallback scanners"""
|
|
54
|
+
raise NotImplementedError(__name__)
|
|
54
55
|
|
|
55
56
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
|
56
57
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
import io
|
|
3
|
+
import logging
|
|
4
|
+
from abc import ABC
|
|
5
|
+
from typing import List, Optional, Dict, Any
|
|
6
|
+
|
|
7
|
+
from credsweeper.common.constants import MAX_LINE_LENGTH
|
|
8
|
+
from credsweeper.credentials.candidate import Candidate
|
|
9
|
+
from credsweeper.deep_scanner.abstract_scanner import AbstractScanner
|
|
10
|
+
from credsweeper.file_handler.data_content_provider import DataContentProvider
|
|
11
|
+
from credsweeper.file_handler.struct_content_provider import StructContentProvider
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class CsvScanner(AbstractScanner, ABC):
|
|
17
|
+
"""Implements CSV scanning"""
|
|
18
|
+
|
|
19
|
+
sniffer = csv.Sniffer()
|
|
20
|
+
# do not use space as separator to avoid hallucinations
|
|
21
|
+
delimiters = ",;\t|\x1F"
|
|
22
|
+
|
|
23
|
+
@classmethod
|
|
24
|
+
def get_structure(cls, text: str) -> List[Dict[str, Any]]:
|
|
25
|
+
"""Reads a text as CSV standard with guessed dialect"""
|
|
26
|
+
# windows style \r\n
|
|
27
|
+
first_line_end = text.find('\r', 0, MAX_LINE_LENGTH)
|
|
28
|
+
line_terminator = "\r\n"
|
|
29
|
+
if 0 > first_line_end:
|
|
30
|
+
# unix style \n
|
|
31
|
+
first_line_end = text.find('\n', 0, MAX_LINE_LENGTH)
|
|
32
|
+
line_terminator = "\n"
|
|
33
|
+
if 0 > first_line_end:
|
|
34
|
+
raise ValueError(f"No suitable line end found in {MAX_LINE_LENGTH} symbols")
|
|
35
|
+
|
|
36
|
+
first_line = text[:first_line_end]
|
|
37
|
+
dialect = cls.sniffer.sniff(first_line, delimiters=cls.delimiters)
|
|
38
|
+
rows = []
|
|
39
|
+
reader = csv.DictReader(io.StringIO(text),
|
|
40
|
+
delimiter=dialect.delimiter,
|
|
41
|
+
lineterminator=line_terminator,
|
|
42
|
+
strict=True)
|
|
43
|
+
# check the constant columns number for all rows
|
|
44
|
+
fields_number = sum(1 for x in reader.fieldnames if x is not None)
|
|
45
|
+
for row in reader:
|
|
46
|
+
if not isinstance(row, dict):
|
|
47
|
+
raise ValueError(f"ERROR: wrong row '{row}'")
|
|
48
|
+
if len(row) != fields_number or any(x is None for x in row.values()):
|
|
49
|
+
# None means no separator used
|
|
50
|
+
raise ValueError(f"Different columns number in row '{row}' - mismatch {fields_number}")
|
|
51
|
+
rows.append(row)
|
|
52
|
+
return rows
|
|
53
|
+
|
|
54
|
+
def data_scan(
|
|
55
|
+
self, #
|
|
56
|
+
data_provider: DataContentProvider, #
|
|
57
|
+
depth: int, #
|
|
58
|
+
recursive_limit_size: int) -> Optional[List[Candidate]]:
|
|
59
|
+
"""Tries to scan each row as structure with column name in key"""
|
|
60
|
+
try:
|
|
61
|
+
if rows := self.get_structure(data_provider.text):
|
|
62
|
+
struct_content_provider = StructContentProvider(struct=rows,
|
|
63
|
+
file_path=data_provider.file_path,
|
|
64
|
+
file_type=data_provider.file_type,
|
|
65
|
+
info=f"{data_provider.info}|CSV")
|
|
66
|
+
new_limit = recursive_limit_size - sum(len(x) for x in rows)
|
|
67
|
+
struct_candidates = self.structure_scan(struct_content_provider, depth, new_limit)
|
|
68
|
+
return struct_candidates
|
|
69
|
+
except Exception as csv_exc:
|
|
70
|
+
logger.debug(f"{data_provider.file_path}:{csv_exc}")
|
|
71
|
+
return None
|
|
@@ -6,6 +6,7 @@ from credsweeper.scanner.scanner import Scanner
|
|
|
6
6
|
from credsweeper.utils.util import Util
|
|
7
7
|
from .byte_scanner import ByteScanner
|
|
8
8
|
from .bzip2_scanner import Bzip2Scanner
|
|
9
|
+
from .csv_scanner import CsvScanner
|
|
9
10
|
from .deb_scanner import DebScanner
|
|
10
11
|
from .docx_scanner import DocxScanner
|
|
11
12
|
from .eml_scanner import EmlScanner
|
|
@@ -39,6 +40,7 @@ class DeepScanner(
|
|
|
39
40
|
ByteScanner, #
|
|
40
41
|
Bzip2Scanner, #
|
|
41
42
|
DocxScanner, #
|
|
43
|
+
CsvScanner, #
|
|
42
44
|
EncoderScanner, #
|
|
43
45
|
GzipScanner, #
|
|
44
46
|
HtmlScanner, #
|
|
@@ -160,16 +162,18 @@ class DeepScanner(
|
|
|
160
162
|
deep_scanners.append(EmlScanner)
|
|
161
163
|
else:
|
|
162
164
|
if 0 < depth:
|
|
163
|
-
# formal patch looks like an eml
|
|
165
|
+
# a formal patch looks like an eml
|
|
164
166
|
deep_scanners.append(PatchScanner)
|
|
165
167
|
fallback_scanners.append(EmlScanner)
|
|
166
168
|
fallback_scanners.append(ByteScanner)
|
|
167
169
|
elif not Util.is_binary(data):
|
|
170
|
+
# keep ByteScanner first to apply real value position if possible
|
|
171
|
+
deep_scanners.append(ByteScanner)
|
|
168
172
|
if 0 < depth:
|
|
169
173
|
deep_scanners.append(PatchScanner)
|
|
170
174
|
deep_scanners.append(EncoderScanner)
|
|
171
175
|
deep_scanners.append(LangScanner)
|
|
172
|
-
|
|
176
|
+
deep_scanners.append(CsvScanner)
|
|
173
177
|
else:
|
|
174
178
|
if 0 < depth:
|
|
175
179
|
deep_scanners.append(StringsScanner)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/credentials/candidate_group_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/string_content_provider.py
RENAMED
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/file_handler/struct_content_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/group/url_credentials_group.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_array_dictionary_check.py
RENAMED
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_atlassian_token_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_base64_encoded_pem_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_dictionary_keyword_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_grafana_service_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_not_allowed_pattern_check.py
RENAMED
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/filters/value_not_part_encoded_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/entropy_evaluation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/is_secret_numeric.py
RENAMED
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/length_of_attribute.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/search_in_attribute.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_postamble.py
RENAMED
|
File without changes
|
|
File without changes
|
{credsweeper-1.13.1 → credsweeper-1.13.2}/credsweeper/ml_model/features/word_in_transition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|