credsweeper 1.11.4__py3-none-any.whl → 1.11.6__py3-none-any.whl
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/__init__.py +21 -15
- credsweeper/__main__.py +141 -35
- credsweeper/app.py +11 -11
- credsweeper/config/__init__.py +0 -1
- credsweeper/config/config.py +1 -1
- credsweeper/credentials/__init__.py +0 -5
- credsweeper/credentials/augment_candidates.py +1 -1
- credsweeper/credentials/candidate.py +1 -1
- credsweeper/credentials/credential_manager.py +1 -1
- credsweeper/credentials/line_data.py +2 -2
- credsweeper/deep_scanner/__init__.py +0 -1
- credsweeper/deep_scanner/abstract_scanner.py +272 -17
- credsweeper/deep_scanner/byte_scanner.py +1 -1
- credsweeper/deep_scanner/bzip2_scanner.py +2 -2
- credsweeper/deep_scanner/deb_scanner.py +34 -27
- credsweeper/deep_scanner/deep_scanner.py +37 -250
- credsweeper/deep_scanner/docx_scanner.py +1 -1
- credsweeper/deep_scanner/eml_scanner.py +1 -1
- credsweeper/deep_scanner/encoder_scanner.py +1 -1
- credsweeper/deep_scanner/gzip_scanner.py +2 -2
- credsweeper/deep_scanner/html_scanner.py +1 -1
- credsweeper/deep_scanner/jclass_scanner.py +74 -0
- credsweeper/deep_scanner/jks_scanner.py +1 -1
- credsweeper/deep_scanner/lang_scanner.py +1 -1
- credsweeper/deep_scanner/lzma_scanner.py +2 -2
- credsweeper/deep_scanner/mxfile_scanner.py +1 -1
- credsweeper/deep_scanner/patch_scanner.py +48 -0
- credsweeper/deep_scanner/pdf_scanner.py +1 -1
- credsweeper/deep_scanner/pkcs_scanner.py +41 -0
- credsweeper/deep_scanner/pptx_scanner.py +1 -1
- credsweeper/deep_scanner/rpm_scanner.py +49 -0
- credsweeper/deep_scanner/sqlite3_scanner.py +79 -0
- credsweeper/deep_scanner/tar_scanner.py +2 -2
- credsweeper/deep_scanner/tmx_scanner.py +2 -2
- credsweeper/deep_scanner/xlsx_scanner.py +2 -2
- credsweeper/deep_scanner/xml_scanner.py +1 -1
- credsweeper/deep_scanner/zip_scanner.py +2 -2
- credsweeper/file_handler/__init__.py +0 -15
- credsweeper/file_handler/abstract_provider.py +3 -4
- credsweeper/file_handler/byte_content_provider.py +1 -1
- credsweeper/file_handler/content_provider.py +1 -1
- credsweeper/file_handler/data_content_provider.py +2 -3
- credsweeper/file_handler/diff_content_provider.py +133 -3
- credsweeper/file_handler/file_path_extractor.py +2 -2
- credsweeper/file_handler/files_provider.py +4 -4
- credsweeper/file_handler/patches_provider.py +10 -8
- credsweeper/file_handler/text_content_provider.py +1 -1
- credsweeper/filters/__init__.py +2 -2
- credsweeper/filters/filter.py +2 -2
- credsweeper/filters/group/__init__.py +0 -2
- credsweeper/filters/group/general_keyword.py +2 -2
- credsweeper/filters/group/general_pattern.py +2 -2
- credsweeper/filters/group/group.py +16 -5
- credsweeper/filters/group/password_keyword.py +2 -2
- credsweeper/filters/group/token_pattern.py +2 -2
- credsweeper/filters/group/url_credentials_group.py +2 -2
- credsweeper/filters/group/weird_base36_token.py +2 -2
- credsweeper/filters/group/weird_base64_token.py +2 -2
- credsweeper/filters/line_git_binary_check.py +3 -3
- credsweeper/filters/line_specific_key_check.py +4 -4
- credsweeper/filters/line_uue_part_check.py +3 -3
- credsweeper/filters/value_allowlist_check.py +4 -4
- credsweeper/filters/value_array_dictionary_check.py +3 -3
- credsweeper/filters/value_atlassian_token_check.py +4 -4
- credsweeper/filters/value_azure_token_check.py +4 -4
- credsweeper/filters/value_base32_data_check.py +4 -4
- credsweeper/filters/value_base64_data_check.py +4 -4
- credsweeper/filters/value_base64_encoded_pem_check.py +4 -4
- credsweeper/filters/value_base64_key_check.py +13 -18
- credsweeper/filters/value_base64_part_check.py +4 -4
- credsweeper/filters/value_basic_auth_check.py +36 -0
- credsweeper/filters/value_blocklist_check.py +3 -3
- credsweeper/filters/value_camel_case_check.py +4 -4
- credsweeper/filters/value_couple_keyword_check.py +3 -3
- credsweeper/filters/value_dictionary_keyword_check.py +3 -3
- credsweeper/filters/value_dictionary_value_length_check.py +3 -3
- credsweeper/filters/value_discord_bot_check.py +4 -4
- credsweeper/filters/value_entropy_base_check.py +4 -4
- credsweeper/filters/value_file_path_check.py +5 -4
- credsweeper/filters/value_github_check.py +3 -3
- credsweeper/filters/value_grafana_check.py +4 -4
- credsweeper/filters/value_grafana_service_check.py +3 -3
- credsweeper/filters/value_hex_number_check.py +3 -3
- credsweeper/filters/value_jfrog_token_check.py +4 -4
- credsweeper/filters/value_json_web_key_check.py +37 -0
- credsweeper/filters/value_json_web_token_check.py +4 -4
- credsweeper/filters/value_last_word_check.py +3 -3
- credsweeper/filters/value_method_check.py +3 -3
- credsweeper/filters/value_not_allowed_pattern_check.py +4 -4
- credsweeper/filters/value_not_part_encoded_check.py +3 -3
- credsweeper/filters/value_number_check.py +3 -3
- credsweeper/filters/value_pattern_check.py +3 -3
- credsweeper/filters/value_similarity_check.py +3 -3
- credsweeper/filters/value_split_keyword_check.py +3 -3
- credsweeper/filters/value_string_type_check.py +3 -3
- credsweeper/filters/value_token_base_check.py +3 -3
- credsweeper/filters/value_token_check.py +3 -3
- credsweeper/logger/__init__.py +0 -1
- credsweeper/logger/logger.py +1 -1
- credsweeper/ml_model/__init__.py +0 -1
- credsweeper/ml_model/features/entropy_evaluation.py +1 -1
- credsweeper/ml_model/features/feature.py +1 -1
- credsweeper/ml_model/features/file_extension.py +1 -1
- credsweeper/ml_model/features/has_html_tag.py +2 -2
- credsweeper/ml_model/features/is_secret_numeric.py +1 -1
- credsweeper/ml_model/features/length_of_attribute.py +1 -1
- credsweeper/ml_model/features/morpheme_dense.py +1 -1
- credsweeper/ml_model/features/rule_name.py +1 -1
- credsweeper/ml_model/features/search_in_attribute.py +1 -1
- credsweeper/ml_model/features/word_in.py +1 -1
- credsweeper/ml_model/features/word_in_path.py +1 -1
- credsweeper/ml_model/features/word_in_postamble.py +1 -1
- credsweeper/ml_model/features/word_in_preamble.py +1 -1
- credsweeper/ml_model/features/word_in_transition.py +1 -1
- credsweeper/ml_model/features/word_in_value.py +1 -1
- credsweeper/ml_model/features/word_in_variable.py +1 -1
- credsweeper/ml_model/ml_validator.py +3 -2
- credsweeper/rules/__init__.py +0 -1
- credsweeper/rules/config.yaml +114 -25
- credsweeper/rules/rule.py +4 -3
- credsweeper/scanner/__init__.py +0 -1
- credsweeper/scanner/scan_type/__init__.py +0 -5
- credsweeper/scanner/scan_type/multi_pattern.py +5 -6
- credsweeper/scanner/scan_type/pem_key_pattern.py +4 -4
- credsweeper/scanner/scan_type/scan_type.py +4 -4
- credsweeper/scanner/scan_type/single_pattern.py +4 -4
- credsweeper/scanner/scanner.py +8 -5
- credsweeper/secret/config.json +6 -6
- credsweeper/utils/__init__.py +0 -1
- credsweeper/utils/pem_key_detector.py +5 -5
- credsweeper/utils/util.py +143 -206
- {credsweeper-1.11.4.dist-info → credsweeper-1.11.6.dist-info}/METADATA +3 -6
- credsweeper-1.11.6.dist-info/RECORD +160 -0
- credsweeper/deep_scanner/pkcs12_scanner.py +0 -45
- credsweeper-1.11.4.dist-info/RECORD +0 -154
- {credsweeper-1.11.4.dist-info → credsweeper-1.11.6.dist-info}/WHEEL +0 -0
- {credsweeper-1.11.4.dist-info → credsweeper-1.11.6.dist-info}/entry_points.txt +0 -0
- {credsweeper-1.11.4.dist-info → credsweeper-1.11.6.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from credsweeper.common.constants import GroupType
|
|
2
|
-
from credsweeper.config import Config
|
|
2
|
+
from credsweeper.config.config import Config
|
|
3
3
|
from credsweeper.filters import (ValueAllowlistCheck, ValueArrayDictionaryCheck, ValueBlocklistCheck,
|
|
4
4
|
ValueCamelCaseCheck, ValueDictionaryValueLengthCheck, ValueFilePathCheck,
|
|
5
5
|
ValueLastWordCheck, ValueMethodCheck, ValueNotAllowedPatternCheck, ValuePatternCheck,
|
|
6
6
|
ValueStringTypeCheck, ValueTokenCheck)
|
|
7
|
-
from credsweeper.filters.group import Group
|
|
7
|
+
from credsweeper.filters.group.group import Group
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class UrlCredentialsGroup(Group):
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from credsweeper.common.constants import GroupType
|
|
2
|
-
from credsweeper.config import Config
|
|
2
|
+
from credsweeper.config.config import Config
|
|
3
3
|
from credsweeper.filters import ValueCoupleKeywordCheck, ValuePatternCheck, ValueNumberCheck, ValueEntropyBase36Check, \
|
|
4
4
|
ValueTokenBase36Check
|
|
5
|
-
from credsweeper.filters.group import Group
|
|
5
|
+
from credsweeper.filters.group.group import Group
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class WeirdBase36Token(Group):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from credsweeper.common.constants import GroupType
|
|
2
|
-
from credsweeper.config import Config
|
|
2
|
+
from credsweeper.config.config import Config
|
|
3
3
|
from credsweeper.filters import ValueCoupleKeywordCheck, ValueNotPartEncodedCheck, \
|
|
4
4
|
ValueBase64DataCheck, ValueEntropyBase64Check, ValuePatternCheck, ValueNumberCheck, ValueTokenBase64Check, \
|
|
5
5
|
ValueBase64PartCheck
|
|
6
|
-
from credsweeper.filters.group import Group
|
|
6
|
+
from credsweeper.filters.group.group import Group
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class WeirdBase64Token(Group):
|
|
@@ -2,10 +2,10 @@ import base64
|
|
|
2
2
|
import contextlib
|
|
3
3
|
import re
|
|
4
4
|
|
|
5
|
-
from credsweeper.config import Config
|
|
6
|
-
from credsweeper.credentials import LineData
|
|
5
|
+
from credsweeper.config.config import Config
|
|
6
|
+
from credsweeper.credentials.line_data import LineData
|
|
7
7
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
8
|
-
from credsweeper.filters import Filter
|
|
8
|
+
from credsweeper.filters.filter import Filter
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class LineGitBinaryCheck(Filter):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
3
|
from credsweeper.common.constants import ML_HUNK
|
|
4
|
-
from credsweeper.config import Config
|
|
5
|
-
from credsweeper.credentials import LineData
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
6
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
-
from credsweeper.filters import Filter
|
|
8
|
-
from credsweeper.utils import Util
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class LineSpecificKeyCheck(Filter):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class LineUUEPartCheck(Filter):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
7
|
-
from credsweeper.utils import Util
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
|
+
from credsweeper.utils.util import Util
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ValueAllowlistCheck(Filter):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class ValueArrayDictionaryCheck(Filter):
|
|
@@ -2,11 +2,11 @@ import binascii
|
|
|
2
2
|
import contextlib
|
|
3
3
|
|
|
4
4
|
from credsweeper.common.constants import LATIN_1, ASCII
|
|
5
|
-
from credsweeper.config import Config
|
|
6
|
-
from credsweeper.credentials import LineData
|
|
5
|
+
from credsweeper.config.config import Config
|
|
6
|
+
from credsweeper.credentials.line_data import LineData
|
|
7
7
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
8
|
-
from credsweeper.filters import Filter
|
|
9
|
-
from credsweeper.utils import Util
|
|
8
|
+
from credsweeper.filters.filter import Filter
|
|
9
|
+
from credsweeper.utils.util import Util
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class ValueAtlassianTokenCheck(Filter):
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
import json
|
|
3
3
|
|
|
4
|
-
from credsweeper.config import Config
|
|
5
|
-
from credsweeper.credentials import LineData
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
6
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
-
from credsweeper.filters import Filter
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
8
8
|
from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check
|
|
9
|
-
from credsweeper.utils import Util
|
|
9
|
+
from credsweeper.utils.util import Util
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class ValueAzureTokenCheck(Filter):
|
|
@@ -2,11 +2,11 @@ import base64
|
|
|
2
2
|
import contextlib
|
|
3
3
|
import string
|
|
4
4
|
|
|
5
|
-
from credsweeper.config import Config
|
|
6
|
-
from credsweeper.credentials import LineData
|
|
5
|
+
from credsweeper.config.config import Config
|
|
6
|
+
from credsweeper.credentials.line_data import LineData
|
|
7
7
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
8
|
-
from credsweeper.filters import Filter
|
|
9
|
-
from credsweeper.utils import Util
|
|
8
|
+
from credsweeper.filters.filter import Filter
|
|
9
|
+
from credsweeper.utils.util import Util
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class ValueBase32DataCheck(Filter):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
import string
|
|
3
3
|
|
|
4
|
-
from credsweeper.config import Config
|
|
5
|
-
from credsweeper.credentials import LineData
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
6
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
-
from credsweeper.filters import Filter
|
|
8
|
-
from credsweeper.utils import Util
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ValueBase64DataCheck(Filter):
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
|
|
3
3
|
from credsweeper.common.constants import ASCII, PEM_BEGIN_PATTERN
|
|
4
|
-
from credsweeper.config import Config
|
|
5
|
-
from credsweeper.credentials import LineData
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
6
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
-
from credsweeper.filters import Filter
|
|
8
|
-
from credsweeper.utils import Util
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
9
8
|
from credsweeper.utils.pem_key_detector import PemKeyDetector
|
|
9
|
+
from credsweeper.utils.util import Util
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class ValueBase64EncodedPem(Filter):
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import contextlib
|
|
2
|
-
import string
|
|
3
2
|
|
|
4
|
-
from
|
|
5
|
-
|
|
6
|
-
from credsweeper.config import Config
|
|
7
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
8
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
9
|
-
from credsweeper.filters import Filter
|
|
10
|
-
from credsweeper.utils import Util
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
|
+
from credsweeper.utils.util import Util
|
|
11
8
|
|
|
12
9
|
|
|
13
10
|
class ValueBase64KeyCheck(Filter):
|
|
14
11
|
"""Check that candidate contains base64 encoded private key"""
|
|
15
12
|
|
|
13
|
+
EXTRA_TRANS_TABLE = str.maketrans('', '', "\",'\\")
|
|
14
|
+
|
|
16
15
|
def __init__(self, config: Config = None) -> None:
|
|
17
16
|
self.config = config
|
|
18
17
|
|
|
@@ -29,12 +28,10 @@ class ValueBase64KeyCheck(Filter):
|
|
|
29
28
|
"""
|
|
30
29
|
|
|
31
30
|
with contextlib.suppress(Exception):
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
for x in string.whitespace:
|
|
37
|
-
text = text.replace(x, '')
|
|
31
|
+
# remove backslash escaping sequences
|
|
32
|
+
text = Util.PEM_CLEANING_PATTERN.sub(r'', line_data.value)
|
|
33
|
+
# remove whitespaces
|
|
34
|
+
text = text.translate(Util.WHITESPACE_TRANS_TABLE)
|
|
38
35
|
# clean sequence concatenation case:
|
|
39
36
|
text = text.replace("'+'", '')
|
|
40
37
|
text = text.replace('"+"', '')
|
|
@@ -43,12 +40,10 @@ class ValueBase64KeyCheck(Filter):
|
|
|
43
40
|
text = text.replace('%2F', '/')
|
|
44
41
|
text = text.replace('%3D', '=')
|
|
45
42
|
# clean any other chars which should not appear
|
|
46
|
-
|
|
47
|
-
text = text.replace(x, "")
|
|
43
|
+
text = text.translate(ValueBase64KeyCheck.EXTRA_TRANS_TABLE)
|
|
48
44
|
# only PEM standard encoding supported in regex pattern to cut off ending of the key
|
|
49
45
|
key = Util.decode_base64(text, padding_safe=True, urlsafe_detect=False)
|
|
50
|
-
private_key =
|
|
51
|
-
if
|
|
52
|
-
# access to size field check - some types have no size
|
|
46
|
+
private_key = Util.load_pk(key, password=None)
|
|
47
|
+
if Util.check_pk(private_key):
|
|
53
48
|
return False
|
|
54
49
|
return True
|
|
@@ -4,12 +4,12 @@ import statistics
|
|
|
4
4
|
from itertools import takewhile
|
|
5
5
|
|
|
6
6
|
from credsweeper.common.constants import Chars
|
|
7
|
-
from credsweeper.config import Config
|
|
8
|
-
from credsweeper.credentials import LineData
|
|
7
|
+
from credsweeper.config.config import Config
|
|
8
|
+
from credsweeper.credentials.line_data import LineData
|
|
9
9
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
10
|
-
from credsweeper.filters import Filter
|
|
10
|
+
from credsweeper.filters.filter import Filter
|
|
11
11
|
from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check
|
|
12
|
-
from credsweeper.utils import Util
|
|
12
|
+
from credsweeper.utils.util import Util
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ValueBase64PartCheck(Filter):
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import contextlib
|
|
2
|
+
|
|
3
|
+
from credsweeper.common.constants import DEFAULT_PATTERN_LEN, UTF_8
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
|
+
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ValueBasicAuthCheck(Filter):
|
|
12
|
+
"""Check that candidate have a known structure"""
|
|
13
|
+
|
|
14
|
+
def __init__(self, config: Config = None) -> None:
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
def run(self, line_data: LineData, target: AnalysisTarget) -> bool:
|
|
18
|
+
"""Run filter checks on received token which might be structured.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
line_data: credential candidate data
|
|
22
|
+
target: multiline target from which line data was obtained
|
|
23
|
+
|
|
24
|
+
Return:
|
|
25
|
+
True, if need to filter candidate and False if left
|
|
26
|
+
|
|
27
|
+
"""
|
|
28
|
+
value = line_data.value
|
|
29
|
+
with contextlib.suppress(Exception):
|
|
30
|
+
# Basic encoding -> login:password
|
|
31
|
+
decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True)
|
|
32
|
+
delimiter_pos = decoded.find(b':')
|
|
33
|
+
# check whether the delimiter exists and all chars are decoded
|
|
34
|
+
if 0 < delimiter_pos < len(decoded) - DEFAULT_PATTERN_LEN and decoded.decode(UTF_8):
|
|
35
|
+
return False
|
|
36
|
+
return True
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from credsweeper.config import Config
|
|
2
|
-
from credsweeper.credentials import LineData
|
|
1
|
+
from credsweeper.config.config import Config
|
|
2
|
+
from credsweeper.credentials.line_data import LineData
|
|
3
3
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
4
|
-
from credsweeper.filters import Filter
|
|
4
|
+
from credsweeper.filters.filter import Filter
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class ValueBlocklistCheck(Filter):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
3
|
from credsweeper.common import static_keyword_checklist
|
|
4
|
-
from credsweeper.config import Config
|
|
5
|
-
from credsweeper.credentials import LineData
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
6
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
-
from credsweeper.filters import Filter
|
|
8
|
-
from credsweeper.utils import Util
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ValueCamelCaseCheck(Filter):
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from credsweeper.common import static_keyword_checklist
|
|
2
|
-
from credsweeper.config import Config
|
|
3
|
-
from credsweeper.credentials import LineData
|
|
2
|
+
from credsweeper.config.config import Config
|
|
3
|
+
from credsweeper.credentials.line_data import LineData
|
|
4
4
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
5
|
-
from credsweeper.filters import Filter
|
|
5
|
+
from credsweeper.filters.filter import Filter
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class ValueCoupleKeywordCheck(Filter):
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from credsweeper.common import static_keyword_checklist
|
|
2
|
-
from credsweeper.config import Config
|
|
3
|
-
from credsweeper.credentials import LineData
|
|
2
|
+
from credsweeper.config.config import Config
|
|
3
|
+
from credsweeper.credentials.line_data import LineData
|
|
4
4
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
5
|
-
from credsweeper.filters import Filter
|
|
5
|
+
from credsweeper.filters.filter import Filter
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class ValueDictionaryKeywordCheck(Filter):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from credsweeper.config import Config
|
|
2
|
-
from credsweeper.credentials import LineData
|
|
1
|
+
from credsweeper.config.config import Config
|
|
2
|
+
from credsweeper.credentials.line_data import LineData
|
|
3
3
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
4
|
-
from credsweeper.filters import Filter
|
|
4
|
+
from credsweeper.filters.filter import Filter
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class ValueDictionaryValueLengthCheck(Filter):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
7
|
from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check
|
|
8
|
-
from credsweeper.utils import Util
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ValueDiscordBotCheck(Filter):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from abc import abstractmethod
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
7
|
-
from credsweeper.utils import Util
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
|
+
from credsweeper.utils.util import Util
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ValueEntropyBaseCheck(Filter):
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from credsweeper.common import static_keyword_checklist
|
|
2
2
|
from credsweeper.common.constants import Chars
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
7
|
-
from credsweeper.
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
|
+
from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class ValueFilePathCheck(Filter):
|
|
@@ -4,10 +4,10 @@ import contextlib
|
|
|
4
4
|
import base62
|
|
5
5
|
|
|
6
6
|
from credsweeper.common.constants import ASCII
|
|
7
|
-
from credsweeper.config import Config
|
|
8
|
-
from credsweeper.credentials import LineData
|
|
7
|
+
from credsweeper.config.config import Config
|
|
8
|
+
from credsweeper.credentials.line_data import LineData
|
|
9
9
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
10
|
-
from credsweeper.filters import Filter
|
|
10
|
+
from credsweeper.filters.filter import Filter
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ValueGitHubCheck(Filter):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
import json
|
|
3
3
|
|
|
4
|
-
from credsweeper.config import Config
|
|
5
|
-
from credsweeper.credentials import LineData
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
6
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
-
from credsweeper.filters import Filter
|
|
8
|
-
from credsweeper.utils import Util
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ValueGrafanaCheck(Filter):
|
|
@@ -3,10 +3,10 @@ import contextlib
|
|
|
3
3
|
import struct
|
|
4
4
|
|
|
5
5
|
from credsweeper.common.constants import ASCII
|
|
6
|
-
from credsweeper.config import Config
|
|
7
|
-
from credsweeper.credentials import LineData
|
|
6
|
+
from credsweeper.config.config import Config
|
|
7
|
+
from credsweeper.credentials.line_data import LineData
|
|
8
8
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
9
|
-
from credsweeper.filters import Filter
|
|
9
|
+
from credsweeper.filters.filter import Filter
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class ValueGrafanaServiceCheck(Filter):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class ValueHexNumberCheck(Filter):
|
|
@@ -4,11 +4,11 @@ import re
|
|
|
4
4
|
import base58
|
|
5
5
|
|
|
6
6
|
from credsweeper.common.constants import ASCII
|
|
7
|
-
from credsweeper.config import Config
|
|
8
|
-
from credsweeper.credentials import LineData
|
|
7
|
+
from credsweeper.config.config import Config
|
|
8
|
+
from credsweeper.credentials.line_data import LineData
|
|
9
9
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
10
|
-
from credsweeper.filters import Filter
|
|
11
|
-
from credsweeper.utils import Util
|
|
10
|
+
from credsweeper.filters.filter import Filter
|
|
11
|
+
from credsweeper.utils.util import Util
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ValueJfrogTokenCheck(Filter):
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import contextlib
|
|
2
|
+
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
|
+
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
|
+
from credsweeper.utils.util import Util
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ValueJsonWebKeyCheck(Filter):
|
|
11
|
+
"""
|
|
12
|
+
Check that candidate is JWK which starts usually from 'e'
|
|
13
|
+
and have private parts of the key
|
|
14
|
+
https://datatracker.ietf.org/doc/html/rfc7517
|
|
15
|
+
https://datatracker.ietf.org/doc/html/rfc7518
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(self, config: Config = None) -> None:
|
|
19
|
+
pass
|
|
20
|
+
|
|
21
|
+
def run(self, line_data: LineData, target: AnalysisTarget) -> bool:
|
|
22
|
+
"""Run filter checks on received key which might be structured.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
line_data: credential candidate data
|
|
26
|
+
target: multiline target from which line data was obtained
|
|
27
|
+
|
|
28
|
+
Return:
|
|
29
|
+
True, when need to filter candidate and False if left
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
with contextlib.suppress(Exception):
|
|
33
|
+
if data := Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True):
|
|
34
|
+
if b'"kty":' in data and (b'"oct"' in data and b'"k":' in data or
|
|
35
|
+
(b'"EC"' in data or b'"RSA"' in data) and b'"d":' in data):
|
|
36
|
+
return False
|
|
37
|
+
return True
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
import json
|
|
3
3
|
|
|
4
|
-
from credsweeper.config import Config
|
|
5
|
-
from credsweeper.credentials import LineData
|
|
4
|
+
from credsweeper.config.config import Config
|
|
5
|
+
from credsweeper.credentials.line_data import LineData
|
|
6
6
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
7
|
-
from credsweeper.filters import Filter
|
|
8
|
-
from credsweeper.utils import Util
|
|
7
|
+
from credsweeper.filters.filter import Filter
|
|
8
|
+
from credsweeper.utils.util import Util
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ValueJsonWebTokenCheck(Filter):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from credsweeper.config import Config
|
|
2
|
-
from credsweeper.credentials import LineData
|
|
1
|
+
from credsweeper.config.config import Config
|
|
2
|
+
from credsweeper.credentials.line_data import LineData
|
|
3
3
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
4
|
-
from credsweeper.filters import Filter
|
|
4
|
+
from credsweeper.filters.filter import Filter
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class ValueLastWordCheck(Filter):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class ValueMethodCheck(Filter):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
7
|
-
from credsweeper.utils import Util
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
|
+
from credsweeper.utils.util import Util
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ValueNotAllowedPatternCheck(Filter):
|
|
@@ -2,10 +2,10 @@ import re
|
|
|
2
2
|
from typing import Optional
|
|
3
3
|
|
|
4
4
|
from credsweeper.common import static_keyword_checklist
|
|
5
|
-
from credsweeper.config import Config
|
|
6
|
-
from credsweeper.credentials import LineData
|
|
5
|
+
from credsweeper.config.config import Config
|
|
6
|
+
from credsweeper.credentials.line_data import LineData
|
|
7
7
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
8
|
-
from credsweeper.filters import Filter
|
|
8
|
+
from credsweeper.filters.filter import Filter
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ValueNotPartEncodedCheck(Filter):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
from credsweeper.config import Config
|
|
4
|
-
from credsweeper.credentials import LineData
|
|
3
|
+
from credsweeper.config.config import Config
|
|
4
|
+
from credsweeper.credentials.line_data import LineData
|
|
5
5
|
from credsweeper.file_handler.analysis_target import AnalysisTarget
|
|
6
|
-
from credsweeper.filters import Filter
|
|
6
|
+
from credsweeper.filters.filter import Filter
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class ValueNumberCheck(Filter):
|