credsweeper 1.12.1__py3-none-any.whl → 1.13.0__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 +1 -1
- credsweeper/__main__.py +23 -13
- credsweeper/app.py +7 -2
- credsweeper/common/keyword_pattern.py +6 -3
- credsweeper/common/morpheme_checklist.txt +13 -1
- credsweeper/config/config.py +1 -0
- credsweeper/credentials/line_data.py +16 -0
- credsweeper/deep_scanner/deep_scanner.py +13 -7
- credsweeper/deep_scanner/rtf_scanner.py +41 -0
- credsweeper/deep_scanner/strings_scanner.py +52 -0
- credsweeper/file_handler/byte_content_provider.py +10 -1
- credsweeper/file_handler/file_path_extractor.py +2 -0
- credsweeper/file_handler/text_content_provider.py +7 -1
- credsweeper/filters/__init__.py +1 -1
- credsweeper/filters/group/token_pattern.py +2 -2
- credsweeper/filters/group/weird_base36_token.py +2 -2
- credsweeper/filters/group/weird_base64_token.py +2 -2
- credsweeper/filters/value_camel_case_check.py +2 -2
- credsweeper/filters/value_file_path_check.py +5 -3
- credsweeper/filters/value_github_check.py +3 -2
- credsweeper/filters/value_morphemes_check.py +43 -0
- credsweeper/filters/value_string_type_check.py +1 -0
- credsweeper/ml_model/features/feature.py +1 -18
- credsweeper/ml_model/features/file_extension.py +1 -1
- credsweeper/ml_model/features/has_html_tag.py +10 -8
- credsweeper/ml_model/features/is_secret_numeric.py +4 -3
- credsweeper/ml_model/features/rule_name.py +1 -1
- credsweeper/ml_model/features/word_in.py +9 -32
- credsweeper/ml_model/features/word_in_path.py +2 -3
- credsweeper/ml_model/features/word_in_postamble.py +1 -4
- credsweeper/ml_model/features/word_in_preamble.py +1 -4
- credsweeper/ml_model/features/word_in_transition.py +1 -4
- credsweeper/ml_model/features/word_in_value.py +2 -3
- credsweeper/ml_model/features/word_in_variable.py +2 -3
- credsweeper/ml_model/ml_config.json +15 -8
- credsweeper/ml_model/ml_model.onnx +0 -0
- credsweeper/ml_model/ml_validator.py +1 -1
- credsweeper/rules/config.yaml +174 -142
- credsweeper/scanner/scanner.py +12 -7
- credsweeper/secret/config.json +18 -5
- credsweeper/utils/util.py +21 -18
- {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/METADATA +7 -7
- {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/RECORD +46 -44
- credsweeper/filters/value_couple_keyword_check.py +0 -28
- {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/WHEEL +0 -0
- {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/entry_points.txt +0 -0
- {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/licenses/LICENSE +0 -0
credsweeper/secret/config.json
CHANGED
|
@@ -12,18 +12,21 @@
|
|
|
12
12
|
".rpm",
|
|
13
13
|
".tar",
|
|
14
14
|
".war",
|
|
15
|
+
".whl",
|
|
15
16
|
".xz",
|
|
16
17
|
".zip"
|
|
17
18
|
],
|
|
18
19
|
"documents": [
|
|
19
|
-
".
|
|
20
|
+
".doc",
|
|
20
21
|
".docx",
|
|
21
|
-
".pptx",
|
|
22
|
-
".xls",
|
|
23
22
|
".odp",
|
|
24
23
|
".ods",
|
|
25
24
|
".odt",
|
|
26
|
-
".pdf"
|
|
25
|
+
".pdf",
|
|
26
|
+
".ppt",
|
|
27
|
+
".pptx",
|
|
28
|
+
".xls",
|
|
29
|
+
".xlsx"
|
|
27
30
|
],
|
|
28
31
|
"extension": [
|
|
29
32
|
".7z",
|
|
@@ -45,16 +48,23 @@
|
|
|
45
48
|
".info",
|
|
46
49
|
".jpeg",
|
|
47
50
|
".jpg",
|
|
51
|
+
".lib",
|
|
48
52
|
".map",
|
|
49
53
|
".m4a",
|
|
50
54
|
".mat",
|
|
51
55
|
".mo",
|
|
56
|
+
".mov",
|
|
52
57
|
".mp3",
|
|
53
58
|
".mp4",
|
|
59
|
+
".mpg",
|
|
60
|
+
".mkv",
|
|
54
61
|
".npy",
|
|
55
62
|
".npz",
|
|
56
63
|
".obj",
|
|
64
|
+
".oga",
|
|
57
65
|
".ogg",
|
|
66
|
+
".ogv",
|
|
67
|
+
".ops",
|
|
58
68
|
".pak",
|
|
59
69
|
".png",
|
|
60
70
|
".psd",
|
|
@@ -71,8 +81,10 @@
|
|
|
71
81
|
".so",
|
|
72
82
|
".sum",
|
|
73
83
|
".svg",
|
|
84
|
+
".swf",
|
|
74
85
|
".tif",
|
|
75
86
|
".tiff",
|
|
87
|
+
".tlb",
|
|
76
88
|
".ttf",
|
|
77
89
|
".vcxproj",
|
|
78
90
|
".vdproj",
|
|
@@ -81,6 +93,7 @@
|
|
|
81
93
|
".webp",
|
|
82
94
|
".wma",
|
|
83
95
|
".woff",
|
|
96
|
+
".woff2",
|
|
84
97
|
".yuv"
|
|
85
98
|
],
|
|
86
99
|
"path": [
|
|
@@ -164,7 +177,7 @@
|
|
|
164
177
|
"tizen"
|
|
165
178
|
],
|
|
166
179
|
"check_for_literals": true,
|
|
167
|
-
"max_password_value_length":
|
|
180
|
+
"max_password_value_length": 64,
|
|
168
181
|
"max_url_cred_value_length": 80,
|
|
169
182
|
"line_data_output": [
|
|
170
183
|
"line",
|
credsweeper/utils/util.py
CHANGED
|
@@ -61,11 +61,11 @@ class Util:
|
|
|
61
61
|
def get_shannon_entropy(data: Union[str, bytes]) -> float:
|
|
62
62
|
"""Borrowed from http://blog.dkbza.org/2007/05/scanning-data-for-entropy-anomalies.html."""
|
|
63
63
|
if not data:
|
|
64
|
-
return 0.
|
|
64
|
+
return 0.0
|
|
65
65
|
size = len(data)
|
|
66
66
|
_uniq, counts = np.unique(list(data), return_counts=True)
|
|
67
67
|
probabilities = counts / size
|
|
68
|
-
entropy = float(
|
|
68
|
+
entropy = -float(np.sum(probabilities * np.log2(probabilities)))
|
|
69
69
|
return entropy
|
|
70
70
|
|
|
71
71
|
# Precalculated data for speedup
|
|
@@ -141,15 +141,6 @@ class Util:
|
|
|
141
141
|
min_entropy = Util.get_min_data_entropy(data_len)
|
|
142
142
|
return entropy < min_entropy
|
|
143
143
|
|
|
144
|
-
@staticmethod
|
|
145
|
-
def is_known(data: Union[bytes, bytearray]) -> bool:
|
|
146
|
-
"""Returns True if any known binary format is found to prevent extra scan a file without an extension."""
|
|
147
|
-
if isinstance(data, (bytes, bytearray)) and data.startswith(b"\x7f\x45\x4c\x46") and 127 <= len(data):
|
|
148
|
-
# https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
|
|
149
|
-
# minimal ELF is 127 bytes https://github.com/tchajed/minimal-elf
|
|
150
|
-
return True
|
|
151
|
-
return False
|
|
152
|
-
|
|
153
144
|
@staticmethod
|
|
154
145
|
def is_binary(data: Union[bytes, bytearray]) -> bool:
|
|
155
146
|
"""
|
|
@@ -218,13 +209,12 @@ class Util:
|
|
|
218
209
|
try:
|
|
219
210
|
if binary_suggest and LATIN_1 == encoding and (Util.is_binary(content) or not Util.is_latin1(content)):
|
|
220
211
|
# LATIN_1 may convert data (bytes in range 0x80:0xFF are transformed)
|
|
221
|
-
# so skip this encoding when checking binaries
|
|
222
|
-
logger.warning("Binary file detected %s", repr(content[:8]))
|
|
223
212
|
break
|
|
224
|
-
|
|
225
|
-
if content !=
|
|
213
|
+
_text = content.decode(encoding=encoding, errors="strict")
|
|
214
|
+
if content != _text.encode(encoding=encoding, errors="strict"):
|
|
226
215
|
# the check helps to detect a real encoding
|
|
227
216
|
raise UnicodeError
|
|
217
|
+
text = _text
|
|
228
218
|
break
|
|
229
219
|
except UnicodeError:
|
|
230
220
|
binary_suggest = True
|
|
@@ -233,6 +223,11 @@ class Util:
|
|
|
233
223
|
logger.error(f"Unexpected Error: Can't read content as {encoding}. Error message: {exc}")
|
|
234
224
|
return text
|
|
235
225
|
|
|
226
|
+
@staticmethod
|
|
227
|
+
def split_text(text: str) -> List[str]:
|
|
228
|
+
"""Splits a text into lines, handling all common line endings (e.g., LF, CRLF, CR)."""
|
|
229
|
+
return text.replace("\r\n", '\n').replace('\r', '\n').split('\n')
|
|
230
|
+
|
|
236
231
|
@staticmethod
|
|
237
232
|
def decode_bytes(content: bytes, encodings: Optional[List[str]] = None) -> List[str]:
|
|
238
233
|
"""Decode content using different encodings.
|
|
@@ -251,7 +246,7 @@ class Util:
|
|
|
251
246
|
|
|
252
247
|
"""
|
|
253
248
|
if text := Util.decode_text(content, encodings):
|
|
254
|
-
lines =
|
|
249
|
+
lines = Util.split_text(text)
|
|
255
250
|
else:
|
|
256
251
|
lines = []
|
|
257
252
|
return lines
|
|
@@ -355,13 +350,20 @@ class Util:
|
|
|
355
350
|
return True
|
|
356
351
|
return False
|
|
357
352
|
|
|
358
|
-
@
|
|
359
|
-
def is_sqlite3(
|
|
353
|
+
@staticmethod
|
|
354
|
+
def is_sqlite3(data: Union[bytes, bytearray]):
|
|
360
355
|
"""According https://en.wikipedia.org/wiki/List_of_file_signatures - SQLite Database"""
|
|
361
356
|
if isinstance(data, (bytes, bytearray)) and data.startswith(b"SQLite format 3\0"):
|
|
362
357
|
return True
|
|
363
358
|
return False
|
|
364
359
|
|
|
360
|
+
@staticmethod
|
|
361
|
+
def is_rtf(data: Union[bytes, bytearray]):
|
|
362
|
+
"""According https://en.wikipedia.org/wiki/List_of_file_signatures - Rich Text Format"""
|
|
363
|
+
if isinstance(data, (bytes, bytearray)) and data.startswith(b"{\\rtf1") and data.endswith(b"}"):
|
|
364
|
+
return True
|
|
365
|
+
return False
|
|
366
|
+
|
|
365
367
|
@staticmethod
|
|
366
368
|
def is_asn1(data: Union[bytes, bytearray]) -> int:
|
|
367
369
|
"""Only sequence type 0x30 and size correctness are checked
|
|
@@ -575,6 +577,7 @@ class Util:
|
|
|
575
577
|
"""decode text to bytes with / without padding detect and urlsafe symbols"""
|
|
576
578
|
value = text.translate(Util.WHITESPACE_TRANS_TABLE)
|
|
577
579
|
if padding_safe:
|
|
580
|
+
value = value.rstrip('=') # python 3.10 workaround
|
|
578
581
|
pad_num = 0x3 & len(value)
|
|
579
582
|
if pad_num:
|
|
580
583
|
value += '=' * (4 - pad_num)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: credsweeper
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.13.0
|
|
4
4
|
Summary: Credential Sweeper
|
|
5
5
|
Project-URL: Homepage, https://github.com/Samsung/CredSweeper
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/Samsung/CredSweeper/issues
|
|
@@ -10,13 +10,12 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
16
|
Classifier: Topic :: Security
|
|
18
17
|
Classifier: Topic :: Software Development :: Quality Assurance
|
|
19
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.10
|
|
20
19
|
Requires-Dist: base58
|
|
21
20
|
Requires-Dist: beautifulsoup4>=4.11.0
|
|
22
21
|
Requires-Dist: colorama
|
|
@@ -24,10 +23,10 @@ Requires-Dist: cryptography
|
|
|
24
23
|
Requires-Dist: gitpython
|
|
25
24
|
Requires-Dist: humanfriendly
|
|
26
25
|
Requires-Dist: lxml
|
|
27
|
-
Requires-Dist: numpy
|
|
26
|
+
Requires-Dist: numpy
|
|
28
27
|
Requires-Dist: odfpy
|
|
29
|
-
Requires-Dist: onnxruntime; platform_system != 'Windows'
|
|
30
|
-
Requires-Dist: onnxruntime==1.19.2; platform_system == 'Windows'
|
|
28
|
+
Requires-Dist: onnxruntime; platform_system != 'Windows' or python_version != '3.12'
|
|
29
|
+
Requires-Dist: onnxruntime==1.19.2; platform_system == 'Windows' and python_version == '3.12'
|
|
31
30
|
Requires-Dist: openpyxl
|
|
32
31
|
Requires-Dist: pandas
|
|
33
32
|
Requires-Dist: pdfminer-six
|
|
@@ -38,6 +37,7 @@ Requires-Dist: python-docx
|
|
|
38
37
|
Requires-Dist: python-pptx
|
|
39
38
|
Requires-Dist: pyyaml
|
|
40
39
|
Requires-Dist: rpmfile
|
|
40
|
+
Requires-Dist: striprtf
|
|
41
41
|
Requires-Dist: whatthepatch
|
|
42
42
|
Requires-Dist: xlrd
|
|
43
43
|
Description-Content-Type: text/markdown
|
|
@@ -90,7 +90,7 @@ Full documentation can be found here: <https://credsweeper.readthedocs.io/>
|
|
|
90
90
|
|
|
91
91
|
### Main Requirements
|
|
92
92
|
|
|
93
|
-
- Python 3.
|
|
93
|
+
- Python 3.10, 3.11, 3.12
|
|
94
94
|
|
|
95
95
|
### Installation
|
|
96
96
|
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
credsweeper/__init__.py,sha256=
|
|
2
|
-
credsweeper/__main__.py,sha256=
|
|
3
|
-
credsweeper/app.py,sha256=
|
|
1
|
+
credsweeper/__init__.py,sha256=53klTPFBlp_YfJdoUuiA4nczrUFDjqtYb-GeF-lhVj4,992
|
|
2
|
+
credsweeper/__main__.py,sha256=cxbrvejofMAhaiOi9fO0qEKVME_HLGTeZAVmcppFsW8,22591
|
|
3
|
+
credsweeper/app.py,sha256=U6V-LQ7OiqNjtP45ih-0HwJqTz5dpgkrG3sRCoWU21A,21001
|
|
4
4
|
credsweeper/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
credsweeper/common/__init__.py,sha256=mYiHEDV0hSeWcFx0Wb8oIRDCPR92ben0mCuC9-gCTgI,184
|
|
6
6
|
credsweeper/common/constants.py,sha256=ZCE5VCpCMx1qmhVEfh2VYmjofQfaYzVip-ej0qJEPT8,5475
|
|
7
7
|
credsweeper/common/keyword_checklist.py,sha256=6EKNdMMryZykedAOhEc-MF1byi5oXmAiljq61T_nco4,2258
|
|
8
8
|
credsweeper/common/keyword_checklist.txt,sha256=a8GW-wF6D83uVFYxMWEsUFlth6c1B_KDpF8_Xpj0mE8,7169
|
|
9
|
-
credsweeper/common/keyword_pattern.py,sha256=
|
|
10
|
-
credsweeper/common/morpheme_checklist.txt,sha256=
|
|
9
|
+
credsweeper/common/keyword_pattern.py,sha256=BuqYm4zYc27MJcxMMPNfqqjbqP2kS8fOaIaCkbuw-fk,3481
|
|
10
|
+
credsweeper/common/morpheme_checklist.txt,sha256=iK0p0dHqgRQ6NWBp0UTz6SkQwllr27PFnhnScJlgONU,8962
|
|
11
11
|
credsweeper/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
-
credsweeper/config/config.py,sha256=
|
|
12
|
+
credsweeper/config/config.py,sha256=iFrUxGvUoFPJT-FsbtQwKYRWMfxn6gJxS1h4GWtnFRM,2694
|
|
13
13
|
credsweeper/credentials/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
credsweeper/credentials/augment_candidates.py,sha256=Rnujq3EmTKhfnGhiuwQ3sCJD5VY4CPuLKCjTujC5TfU,812
|
|
15
15
|
credsweeper/credentials/candidate.py,sha256=VeOnxdkdb2bN5G9y0jqBJuATiqEB0QoYwsyrc3d9G9Y,5515
|
|
16
16
|
credsweeper/credentials/candidate_group_generator.py,sha256=rN_c4-ogPz0h-z2aPgzbu0hUz68L69xfd9oyzkooTUc,1243
|
|
17
17
|
credsweeper/credentials/candidate_key.py,sha256=NsYGPqqjfm6z2MGtcQbiUGiWmKUCuzflXlZYf_vn_84,917
|
|
18
18
|
credsweeper/credentials/credential_manager.py,sha256=Au5oCtz0HY33e83P5EN5v6LQMLYIbtZGvaClOc-uKZ0,4197
|
|
19
|
-
credsweeper/credentials/line_data.py,sha256=
|
|
19
|
+
credsweeper/credentials/line_data.py,sha256=AwaBOZ0CHcb7d6SMJvF1BBNacovlmO-nES0SDEuoPs0,22528
|
|
20
20
|
credsweeper/deep_scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
credsweeper/deep_scanner/abstract_scanner.py,sha256=Dnfb4JpkOP1eF4MTxcGAXZ4E4H8T-KpFybYVqhjyGrE,15819
|
|
22
22
|
credsweeper/deep_scanner/byte_scanner.py,sha256=U1XTqFmfJ71GQs16n1KZ-Grw2pJ3_K7ozHWDzI_vCbo,1135
|
|
23
23
|
credsweeper/deep_scanner/bzip2_scanner.py,sha256=-Ops6s3MqurtPdrl56qgqYCHLMyWeP-TZ477FcpKMaA,1634
|
|
24
24
|
credsweeper/deep_scanner/deb_scanner.py,sha256=cu2jCMUdctn3ezoOo7kHAC-85NCaY9m_b_rI3aNMmuQ,2495
|
|
25
|
-
credsweeper/deep_scanner/deep_scanner.py,sha256=
|
|
25
|
+
credsweeper/deep_scanner/deep_scanner.py,sha256=ZZuNs4mOITR00gYD8aQ1yn6QhvkssaVDWF5MKJHyvJA,6502
|
|
26
26
|
credsweeper/deep_scanner/docx_scanner.py,sha256=yL4IvSbiU9AkGHXUHYNV9rOlzfgPJ-dtMn7VxDg6pkw,4163
|
|
27
27
|
credsweeper/deep_scanner/eml_scanner.py,sha256=zZSFRSX-5h5iMwofGNRYRjRxr_RdwnQyjP1D6ULz2P8,3522
|
|
28
28
|
credsweeper/deep_scanner/encoder_scanner.py,sha256=3bip1bV7dW9BKeG7aIwWWyoi3whVuXxose5eLk3oYlA,1325
|
|
@@ -38,7 +38,9 @@ credsweeper/deep_scanner/pdf_scanner.py,sha256=1UBvLq96SIPr3PCgzuDg8H6Wj9_DsiWT5
|
|
|
38
38
|
credsweeper/deep_scanner/pkcs_scanner.py,sha256=AUjsldmwRz92Z98ZJWoXqbylu3oJLj79Himvfq13lyA,1749
|
|
39
39
|
credsweeper/deep_scanner/pptx_scanner.py,sha256=sxVz2R0Z1D_XF_uhl65dnI2gidYR-J6Ok53WiH0pQh0,1838
|
|
40
40
|
credsweeper/deep_scanner/rpm_scanner.py,sha256=dR7qFnoXdKeHKK21cFP5OFXYZvjdeKchkolUrLRfnUM,2293
|
|
41
|
+
credsweeper/deep_scanner/rtf_scanner.py,sha256=ZcPk6ZsqCI69wkTaJxDbHk9qz4RVau1gR5NYOvsjr7s,1617
|
|
41
42
|
credsweeper/deep_scanner/sqlite3_scanner.py,sha256=9XaFTtSZoiaKKPIrDpxDsFIh8m3wILR3c2927dWgXCQ,3510
|
|
43
|
+
credsweeper/deep_scanner/strings_scanner.py,sha256=qgPrBZo87vGhNT8pyuhzlX93bI3lCnAJJWHeOkg_60A,2236
|
|
42
44
|
credsweeper/deep_scanner/tar_scanner.py,sha256=6VAw-xSvYQqmP_OmLuETelRQFUK_UzmJfSXC49dzYzI,2440
|
|
43
45
|
credsweeper/deep_scanner/tmx_scanner.py,sha256=Nlmx_zH_J1AAPEbXoxz_NjPkg9uVN4TtS8Z1pRqZOag,1961
|
|
44
46
|
credsweeper/deep_scanner/xlsx_scanner.py,sha256=BlbylVMAC1-OEERuB_A54BjETmmQsVNWOSXojxeTKYA,2721
|
|
@@ -47,18 +49,18 @@ credsweeper/deep_scanner/zip_scanner.py,sha256=bElKtNwpecOmBfJBsi-2y9SjcrpFFe-ix
|
|
|
47
49
|
credsweeper/file_handler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
50
|
credsweeper/file_handler/abstract_provider.py,sha256=2qtZHOLSf3HnEkHjugLo-OpY2bPeMJU0_CU9bX6Show,1324
|
|
49
51
|
credsweeper/file_handler/analysis_target.py,sha256=FEznSNcUbTaqGa3ZKy8FusdqDR7CxFX1fwIrA_LdwoY,2752
|
|
50
|
-
credsweeper/file_handler/byte_content_provider.py,sha256=
|
|
52
|
+
credsweeper/file_handler/byte_content_provider.py,sha256=NP-SDn6tp2x9M7ro0Yx4GwoUJV29ZBJZTEjl4CFINHc,2305
|
|
51
53
|
credsweeper/file_handler/content_provider.py,sha256=eUTgzbZaml6AFXlTJysVw4_nHVVFXYCoDSCtGiB0zBI,3893
|
|
52
54
|
credsweeper/file_handler/data_content_provider.py,sha256=p2hvZabS4pH6_y9eLn2M4VJTH-9dn8S9QeglxuFJJeQ,17667
|
|
53
55
|
credsweeper/file_handler/descriptor.py,sha256=LQHjzmRL0fl8mlKwA--Nl_D4mKFtg9VsUJnWZqtjFhU,185
|
|
54
56
|
credsweeper/file_handler/diff_content_provider.py,sha256=zziVB38BbXTmKuDAesjzw-pCWEZLUMUprIRl1G9mXpg,7782
|
|
55
|
-
credsweeper/file_handler/file_path_extractor.py,sha256=
|
|
57
|
+
credsweeper/file_handler/file_path_extractor.py,sha256=_nc0DnwQDU886NVBp4YgJOEo21HT6TvAy0kyPIRtB-o,6954
|
|
56
58
|
credsweeper/file_handler/files_provider.py,sha256=3dCsrrkhrjYAJ75-FRWn5H4-55Nnk_S0YkXS66G3tYk,2538
|
|
57
59
|
credsweeper/file_handler/patches_provider.py,sha256=fzC0tUAzev5PzZJ8NcIL1HfeGPcLvWZNlf4noeGLhlo,3016
|
|
58
60
|
credsweeper/file_handler/string_content_provider.py,sha256=e7mHLwa5bkHthI3hr5pP7ZlyoFfPeeVbmTAlZG2-xB4,2481
|
|
59
61
|
credsweeper/file_handler/struct_content_provider.py,sha256=H1ZhSosaWJEOtzWYC1rve0glrJUu2UDYjmOx-9DDNxs,1595
|
|
60
|
-
credsweeper/file_handler/text_content_provider.py,sha256
|
|
61
|
-
credsweeper/filters/__init__.py,sha256=
|
|
62
|
+
credsweeper/file_handler/text_content_provider.py,sha256=-ChrXvo6Cq2eWcHR_EpZ5FUdfGZk-MUDImhDjxuNPf8,3325
|
|
63
|
+
credsweeper/filters/__init__.py,sha256=ysfbPt7iWEgpSDquxJpPi6d-RXOKDBz4C2zxmD9DwhM,3318
|
|
62
64
|
credsweeper/filters/filter.py,sha256=Z6z8mQ3uACWPUnNZWBju41ch__ojN7glxbh6s70zWLQ,927
|
|
63
65
|
credsweeper/filters/line_git_binary_check.py,sha256=UV9BlPIpcz8019wvRSq-wz3TvU4D7T8n1esM8zIix2s,1657
|
|
64
66
|
credsweeper/filters/line_specific_key_check.py,sha256=lRt35rYBnzeqyW_Gylu6ewf_x6Nw3fMSMzxe-3G4dVI,1603
|
|
@@ -74,16 +76,15 @@ credsweeper/filters/value_base64_key_check.py,sha256=NzT0hwdg8c732Q4nx1O4Y14yLrQ
|
|
|
74
76
|
credsweeper/filters/value_base64_part_check.py,sha256=ux250qeSjqqsbkgiok29cu0fSLbjGD2jMllXSErTtMg,5025
|
|
75
77
|
credsweeper/filters/value_basic_auth_check.py,sha256=yrH-nXTAW2ol0J_S7UxN2dYZPQSthtigm60vq4Flfow,1395
|
|
76
78
|
credsweeper/filters/value_blocklist_check.py,sha256=QeRHpjQQNLDYmQYfpETXbkAMBTeqtW-BZ6iBOcb8gms,1208
|
|
77
|
-
credsweeper/filters/value_camel_case_check.py,sha256=
|
|
78
|
-
credsweeper/filters/value_couple_keyword_check.py,sha256=hZ_uAqUpIdGV6yadYIoDHJaBHaTcM3r7LF79ryujDvo,1067
|
|
79
|
+
credsweeper/filters/value_camel_case_check.py,sha256=0CzDzFa9ZGdPAejAajATS_vSaClIdGjC5rrvS4RbtSM,1296
|
|
79
80
|
credsweeper/filters/value_dictionary_keyword_check.py,sha256=aKUe1gWk80h_3Euo_5wog3MLJb20yrf3CmKyVDHjrt8,1326
|
|
80
81
|
credsweeper/filters/value_discord_bot_check.py,sha256=bjBdMCNfg2AH1kyBTBIp_FEr-dDfbui6CO0czVTM-os,1547
|
|
81
82
|
credsweeper/filters/value_entropy_base32_check.py,sha256=PKFp6eOXZ8yiK00JNxWPbxw4LnAeE16u39ePNozTGEg,642
|
|
82
83
|
credsweeper/filters/value_entropy_base36_check.py,sha256=ZHa_AUtskBCmfhUQwjgkolB1OuB2t1GRDi8SDl7o_A8,651
|
|
83
84
|
credsweeper/filters/value_entropy_base64_check.py,sha256=Kp6AU1rOqEnO4MJ7xoQhMSbvoJKMBBcEQvZz_JsX_kY,812
|
|
84
85
|
credsweeper/filters/value_entropy_base_check.py,sha256=6mBfw5RAXutHemMARe0eJl_7I0G24rzl4ggzYOIPQGk,1308
|
|
85
|
-
credsweeper/filters/value_file_path_check.py,sha256=
|
|
86
|
-
credsweeper/filters/value_github_check.py,sha256=
|
|
86
|
+
credsweeper/filters/value_file_path_check.py,sha256=SO1WR1dLKsJpkC8dWab16JTAPRR652Zps8wBo5rB2CU,3787
|
|
87
|
+
credsweeper/filters/value_github_check.py,sha256=QA5cymmhlwx8DaK8zTdS3By7-ay32R2BhAIz7LIOM0Q,1630
|
|
87
88
|
credsweeper/filters/value_grafana_check.py,sha256=4WO6nE4Mg38Yp8EICIO0YxLnLXjg7Pd0vvZRRmbyPG0,1573
|
|
88
89
|
credsweeper/filters/value_grafana_service_check.py,sha256=zufVC7k0upjTww842vMK297HMTuK1RZu8mYybBRmWDQ,1195
|
|
89
90
|
credsweeper/filters/value_hex_number_check.py,sha256=bEknr5uHGFMLUhZdPMU4Trmxnl8iJbXfVUPbIIm1D3I,1038
|
|
@@ -93,13 +94,14 @@ credsweeper/filters/value_json_web_token_check.py,sha256=XXPqdWomf4LXVr2ihxygxMG
|
|
|
93
94
|
credsweeper/filters/value_last_word_check.py,sha256=EX9DiZrZt0Kd_3PNAcj5uKhuKrJs-84GVhX51WBXvgE,963
|
|
94
95
|
credsweeper/filters/value_length_check.py,sha256=HBGGXZLZpLpH6V9J7Uz8qXa1o-DsSU6QahZhBDa3Y0Y,1174
|
|
95
96
|
credsweeper/filters/value_method_check.py,sha256=ekpvFWGk71hpsRYWmte0ob8_lpfYvmgr0Otqy5X2h68,1175
|
|
97
|
+
credsweeper/filters/value_morphemes_check.py,sha256=u0dpYxhiH1s-jag0YykXIORr09b90XatbWDEIIu3Z_c,1958
|
|
96
98
|
credsweeper/filters/value_not_allowed_pattern_check.py,sha256=0zVvEGp8CJA5_pEeKm551cT19nmt_fE09asoTZfmxgk,1245
|
|
97
99
|
credsweeper/filters/value_not_part_encoded_check.py,sha256=Myhm9o5HxmkEsKw8z8ssJy4__FNqGvmMQNAR6OAoHN8,3839
|
|
98
100
|
credsweeper/filters/value_number_check.py,sha256=_syVNMVQlRQN8fM2n2LOdWTbruicd2jW419gI0eJO78,1192
|
|
99
101
|
credsweeper/filters/value_pattern_check.py,sha256=6yovpT3a9_x5W0MU1_7Bbcbj5CgoySy61dKQWhOb9ns,6916
|
|
100
102
|
credsweeper/filters/value_similarity_check.py,sha256=uFaQkYy0MvJIOQLqeqOjVQkQzf3PHP8pxI6uSANmwGo,1235
|
|
101
103
|
credsweeper/filters/value_split_keyword_check.py,sha256=yLMbGy9pvNbV_Siw_vl2RB8p1UGQAMiExd_kC-wc_rY,1175
|
|
102
|
-
credsweeper/filters/value_string_type_check.py,sha256=
|
|
104
|
+
credsweeper/filters/value_string_type_check.py,sha256=Ua85BMqT9IqbWaJuk9mfuCkHDM8maV0Ny25ePU5w-28,2198
|
|
103
105
|
credsweeper/filters/value_token_base32_check.py,sha256=nI6Xz3Vu-ps6Uq4svRjNAvz4TzC1n1Vhjhd1DGpusws,1875
|
|
104
106
|
credsweeper/filters/value_token_base36_check.py,sha256=qYVVSZByF1ZoLfAuxbHrSlYtcekuHYzGhi4FFW9A8zI,1885
|
|
105
107
|
credsweeper/filters/value_token_base64_check.py,sha256=Gy8_X9SscffIjp6VOA1RttdFQVEv28uaeqPt8xYefPQ,1891
|
|
@@ -110,52 +112,52 @@ credsweeper/filters/group/general_keyword.py,sha256=NetpCdWS44fixqZVHaiPW-UB7pRs
|
|
|
110
112
|
credsweeper/filters/group/general_pattern.py,sha256=WoIqyMU8tjEVPLfZaJYsM0_XMlb0dQVJYU90ogpAhlo,303
|
|
111
113
|
credsweeper/filters/group/group.py,sha256=tj5OSndxhlcCZREdEeaE3j6NWY0tazkW1k9piBCdF9M,2661
|
|
112
114
|
credsweeper/filters/group/password_keyword.py,sha256=Mv1Op3SaXRcqMRsxoBdSuyt03OR0sOciHShgxTjF3pY,714
|
|
113
|
-
credsweeper/filters/group/token_pattern.py,sha256=
|
|
115
|
+
credsweeper/filters/group/token_pattern.py,sha256=mgcYkb3-GBadtWzRmeAPFDCzSKKFV20qm75ovzcsWNI,580
|
|
114
116
|
credsweeper/filters/group/url_credentials_group.py,sha256=z2A-HFLiGF0lPEku7ER22FzmxwnJCqwIv4sBkX87qAE,1444
|
|
115
|
-
credsweeper/filters/group/weird_base36_token.py,sha256=
|
|
116
|
-
credsweeper/filters/group/weird_base64_token.py,sha256=
|
|
117
|
+
credsweeper/filters/group/weird_base36_token.py,sha256=JpI04cuUU7UPfUjDsmo0MahHacahb_likbCjDpCIVJ4,671
|
|
118
|
+
credsweeper/filters/group/weird_base64_token.py,sha256=Un6cW132Go4UFcPBGdc9j9xQjeUksXzJbhLGscKiNwI,860
|
|
117
119
|
credsweeper/logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
120
|
credsweeper/logger/logger.py,sha256=el-wbkQUOcpaOa8w-sd5p0hgJ486ncDh9T7sArowAAw,1833
|
|
119
121
|
credsweeper/ml_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
|
-
credsweeper/ml_model/ml_config.json,sha256=
|
|
121
|
-
credsweeper/ml_model/ml_model.onnx,sha256=
|
|
122
|
-
credsweeper/ml_model/ml_validator.py,sha256=
|
|
122
|
+
credsweeper/ml_model/ml_config.json,sha256=JVDx1kS0brPv4aE-cmFRq2sUWr4Q4VB-Ljnm5mhXyis,19401
|
|
123
|
+
credsweeper/ml_model/ml_model.onnx,sha256=RCwHwrJRTwX-BhrBiZkHTgOr-2V9F4RjKumu-DXIXw4,12856578
|
|
124
|
+
credsweeper/ml_model/ml_validator.py,sha256=h52zH4VTQDNH2FIwxtCs2fcBDPfJogIn-59qTX-KIHc,12946
|
|
123
125
|
credsweeper/ml_model/features/__init__.py,sha256=veCL3g1lG65YFOi_mBwM5C1D543yWCGgjAl0s-EE0TQ,1089
|
|
124
126
|
credsweeper/ml_model/features/entropy_evaluation.py,sha256=nFUBtNn_d-iUt25lLxCdf0cCMJmlMJnIWQd0soO3KRk,2615
|
|
125
|
-
credsweeper/ml_model/features/feature.py,sha256=
|
|
126
|
-
credsweeper/ml_model/features/file_extension.py,sha256=
|
|
127
|
-
credsweeper/ml_model/features/has_html_tag.py,sha256=
|
|
128
|
-
credsweeper/ml_model/features/is_secret_numeric.py,sha256=
|
|
127
|
+
credsweeper/ml_model/features/feature.py,sha256=XKRyex8qmagcAUGXGebs2Deh2ZmJF0hio0Fts0HBoX4,667
|
|
128
|
+
credsweeper/ml_model/features/file_extension.py,sha256=X0r2eBixbgKlX1hhcq_S0qBf3wNsG_IRhUVm41hdDfQ,699
|
|
129
|
+
credsweeper/ml_model/features/has_html_tag.py,sha256=J7V59_nH7kVu31Lwn6i0Gnsp2feHe_fh7KhQMW1XpIw,1162
|
|
130
|
+
credsweeper/ml_model/features/is_secret_numeric.py,sha256=P3Br-VDrt9oChZzVmeHlATCoR_ewRQpmJPt2gGouPV0,432
|
|
129
131
|
credsweeper/ml_model/features/length_of_attribute.py,sha256=2t5Xf8PVUgJi0_uwR7UqQjjRF_U_cy-vP1cqGVlmeKY,1202
|
|
130
132
|
credsweeper/ml_model/features/morpheme_dense.py,sha256=_06StZjTnFPs-4ARSWIAXNz5f-RzjFsZ_Qgyo7dXK0Y,1102
|
|
131
|
-
credsweeper/ml_model/features/rule_name.py,sha256=
|
|
133
|
+
credsweeper/ml_model/features/rule_name.py,sha256=41-41BQZVtRsWL5mEzH5Dq1v84UXj9aRt3jmgzjmeSE,679
|
|
132
134
|
credsweeper/ml_model/features/rule_severity.py,sha256=KlkLm744BpbDed6JpLDGgQ7-F2_x_JYOtxTBxtFfbAY,775
|
|
133
135
|
credsweeper/ml_model/features/search_in_attribute.py,sha256=tuKpfERaS2tT2-EcXb03P1DJUcvz9OTAMr_0c-rWxvE,702
|
|
134
|
-
credsweeper/ml_model/features/word_in.py,sha256=
|
|
135
|
-
credsweeper/ml_model/features/word_in_path.py,sha256
|
|
136
|
-
credsweeper/ml_model/features/word_in_postamble.py,sha256=
|
|
137
|
-
credsweeper/ml_model/features/word_in_preamble.py,sha256=
|
|
138
|
-
credsweeper/ml_model/features/word_in_transition.py,sha256=
|
|
139
|
-
credsweeper/ml_model/features/word_in_value.py,sha256=
|
|
140
|
-
credsweeper/ml_model/features/word_in_variable.py,sha256=
|
|
136
|
+
credsweeper/ml_model/features/word_in.py,sha256=yxJU1JdWqoWPzwQxJdpjtoj3S0vDJ2NoUrKc96-VcvA,1254
|
|
137
|
+
credsweeper/ml_model/features/word_in_path.py,sha256=-6vCtRliLGAgbEi4HT4xRZUXMUzQhF5_F2ymvrKakr8,1080
|
|
138
|
+
credsweeper/ml_model/features/word_in_postamble.py,sha256=1mIEmhMtcCt1LCeGL04JTrc6HLa6rYN1i2y-uooW1Cg,865
|
|
139
|
+
credsweeper/ml_model/features/word_in_preamble.py,sha256=xhjCppEqWQjI8hGYG5W605lBaLRm8xPhWCGMedb2Mbc,1213
|
|
140
|
+
credsweeper/ml_model/features/word_in_transition.py,sha256=kUTSLcMDVqYX_hsCl_JyVpdm3e5otfsf8Ypf2At2MdE,817
|
|
141
|
+
credsweeper/ml_model/features/word_in_value.py,sha256=rC8orl9tMHgPBAS9kMJiHOFdQQ6mDwQY6Siq9sIE54E,522
|
|
142
|
+
credsweeper/ml_model/features/word_in_variable.py,sha256=kfr05_NdmlqnxMx6wxRt8qU32dlgKmODUrP60ucWWdY,497
|
|
141
143
|
credsweeper/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
|
-
credsweeper/rules/config.yaml,sha256=
|
|
144
|
+
credsweeper/rules/config.yaml,sha256=AiYGWT1jpSywmABjT-5zYRE5Gk0qW23qU_C35HqyFvY,42670
|
|
143
145
|
credsweeper/rules/rule.py,sha256=rn7qAwD2D6Z9ckinv0JTGIjsxXk4NIGRVTNAIhQZpm4,10260
|
|
144
146
|
credsweeper/scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
145
|
-
credsweeper/scanner/scanner.py,sha256=
|
|
147
|
+
credsweeper/scanner/scanner.py,sha256=CaAsv7E0Sant_W8aLLjoC7bjYmpQknHN3YD0r76R_8Y,10634
|
|
146
148
|
credsweeper/scanner/scan_type/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
147
149
|
credsweeper/scanner/scan_type/multi_pattern.py,sha256=4CfcNyTIVIOf0mE_v_KOhhWaziBdaeqQVQYLLGn-VRg,3848
|
|
148
150
|
credsweeper/scanner/scan_type/pem_key_pattern.py,sha256=xFv4v_KuXh_oUB_WIN4pRtKGAYZ0CLkGGHMGRpPFZ78,1533
|
|
149
151
|
credsweeper/scanner/scan_type/scan_type.py,sha256=9YFYEqL5Me2Sq_SHsELLajHbeCrzRlNzln8R5NuQaJY,9425
|
|
150
152
|
credsweeper/scanner/scan_type/single_pattern.py,sha256=eU7souNPml8KvsI15IATX9HEbBB1ou61BnaBLm9LrVs,986
|
|
151
|
-
credsweeper/secret/config.json,sha256=
|
|
153
|
+
credsweeper/secret/config.json,sha256=MBztENieYs7a3cLqLbQDg29W4CaqazXnCKNquhIE6oI,3766
|
|
152
154
|
credsweeper/secret/log.yaml,sha256=h29atN5Kvk68oKuTYG2Mi4f2uNO3dvwhOkzCRBKo1rg,952
|
|
153
155
|
credsweeper/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
154
156
|
credsweeper/utils/hop_stat.py,sha256=vMd_1lcpDo4yaFhi61X0tJeeE83qUbzPckvxZcrgsgs,3010
|
|
155
157
|
credsweeper/utils/pem_key_detector.py,sha256=5BwapI5Ub0DyK_X1v8rcTLe6U4uDjFjgWgitxBpHx9E,7588
|
|
156
|
-
credsweeper/utils/util.py,sha256=
|
|
157
|
-
credsweeper-1.
|
|
158
|
-
credsweeper-1.
|
|
159
|
-
credsweeper-1.
|
|
160
|
-
credsweeper-1.
|
|
161
|
-
credsweeper-1.
|
|
158
|
+
credsweeper/utils/util.py,sha256=EihI-BmLH6_qvjuIle32JQlz7L9lZPSFjs7NmRYZago,28117
|
|
159
|
+
credsweeper-1.13.0.dist-info/METADATA,sha256=7b5ZvO9rjWNDZ71FWiIQSwEnbVwTxobu6lSq8nBBmac,10392
|
|
160
|
+
credsweeper-1.13.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
161
|
+
credsweeper-1.13.0.dist-info/entry_points.txt,sha256=SLGNZshvi3zpWPhVmRP-oDXRMRPBS4tzRDy6xYOXwqA,58
|
|
162
|
+
credsweeper-1.13.0.dist-info/licenses/LICENSE,sha256=aU7mGjBKbmRHNLVXXzcPdKmTtBxRwDPtjflQRfN7fFg,1065
|
|
163
|
+
credsweeper-1.13.0.dist-info/RECORD,,
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
|
-
from credsweeper.common import static_keyword_checklist
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
class ValueCoupleKeywordCheck(Filter):
|
|
11
|
-
"""Check value if TWO words from morphemes checklist exists in value"""
|
|
12
|
-
|
|
13
|
-
def __init__(self, config: Optional[Config] = None, threshold=1) -> None:
|
|
14
|
-
# threshold - minimum morphemes number in a value
|
|
15
|
-
self.threshold = threshold
|
|
16
|
-
|
|
17
|
-
def run(self, line_data: LineData, target: AnalysisTarget) -> bool:
|
|
18
|
-
"""Run filter checks on received credential candidate data 'line_data'.
|
|
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
|
-
return static_keyword_checklist.check_morphemes(line_data.value.lower(), self.threshold)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|