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.

Files changed (47) hide show
  1. credsweeper/__init__.py +1 -1
  2. credsweeper/__main__.py +23 -13
  3. credsweeper/app.py +7 -2
  4. credsweeper/common/keyword_pattern.py +6 -3
  5. credsweeper/common/morpheme_checklist.txt +13 -1
  6. credsweeper/config/config.py +1 -0
  7. credsweeper/credentials/line_data.py +16 -0
  8. credsweeper/deep_scanner/deep_scanner.py +13 -7
  9. credsweeper/deep_scanner/rtf_scanner.py +41 -0
  10. credsweeper/deep_scanner/strings_scanner.py +52 -0
  11. credsweeper/file_handler/byte_content_provider.py +10 -1
  12. credsweeper/file_handler/file_path_extractor.py +2 -0
  13. credsweeper/file_handler/text_content_provider.py +7 -1
  14. credsweeper/filters/__init__.py +1 -1
  15. credsweeper/filters/group/token_pattern.py +2 -2
  16. credsweeper/filters/group/weird_base36_token.py +2 -2
  17. credsweeper/filters/group/weird_base64_token.py +2 -2
  18. credsweeper/filters/value_camel_case_check.py +2 -2
  19. credsweeper/filters/value_file_path_check.py +5 -3
  20. credsweeper/filters/value_github_check.py +3 -2
  21. credsweeper/filters/value_morphemes_check.py +43 -0
  22. credsweeper/filters/value_string_type_check.py +1 -0
  23. credsweeper/ml_model/features/feature.py +1 -18
  24. credsweeper/ml_model/features/file_extension.py +1 -1
  25. credsweeper/ml_model/features/has_html_tag.py +10 -8
  26. credsweeper/ml_model/features/is_secret_numeric.py +4 -3
  27. credsweeper/ml_model/features/rule_name.py +1 -1
  28. credsweeper/ml_model/features/word_in.py +9 -32
  29. credsweeper/ml_model/features/word_in_path.py +2 -3
  30. credsweeper/ml_model/features/word_in_postamble.py +1 -4
  31. credsweeper/ml_model/features/word_in_preamble.py +1 -4
  32. credsweeper/ml_model/features/word_in_transition.py +1 -4
  33. credsweeper/ml_model/features/word_in_value.py +2 -3
  34. credsweeper/ml_model/features/word_in_variable.py +2 -3
  35. credsweeper/ml_model/ml_config.json +15 -8
  36. credsweeper/ml_model/ml_model.onnx +0 -0
  37. credsweeper/ml_model/ml_validator.py +1 -1
  38. credsweeper/rules/config.yaml +174 -142
  39. credsweeper/scanner/scanner.py +12 -7
  40. credsweeper/secret/config.json +18 -5
  41. credsweeper/utils/util.py +21 -18
  42. {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/METADATA +7 -7
  43. {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/RECORD +46 -44
  44. credsweeper/filters/value_couple_keyword_check.py +0 -28
  45. {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/WHEEL +0 -0
  46. {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/entry_points.txt +0 -0
  47. {credsweeper-1.12.1.dist-info → credsweeper-1.13.0.dist-info}/licenses/LICENSE +0 -0
@@ -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
- ".xlsx",
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": 31,
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(-np.sum(probabilities * np.log2(probabilities)))
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
- text = content.decode(encoding, errors="strict")
225
- if content != text.encode(encoding, errors="strict"):
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 = text.replace('\r\n', '\n').replace('\r', '\n').split('\n')
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
- @classmethod
359
- def is_sqlite3(cls, data):
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.12.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.9
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<2.0.0
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.9, 3.10, 3.11, 3.12
93
+ - Python 3.10, 3.11, 3.12
94
94
 
95
95
  ### Installation
96
96
 
@@ -1,28 +1,28 @@
1
- credsweeper/__init__.py,sha256=r7ftJ7P_js_nXMf0Z0h1tOHjMzmCX_qUlMRhVahUfaM,992
2
- credsweeper/__main__.py,sha256=koQXkosJ4wZ54MmOIUUsx8dHeAiEkv6ZHu3hGTUU7uA,21825
3
- credsweeper/app.py,sha256=hAGmbGJpDPmYf4xCUJ__oGyDGdZdWc_IGojad26Nc4o,20780
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=UIty0_CfWy5oMH-pcY6jDF-TaWJOaXC1zQGy3B3DD2c,3322
10
- credsweeper/common/morpheme_checklist.txt,sha256=81HzC_wRi-hOSnyec4Hw5kY9fjOg91WNrsQ7ksMoO20,8880
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=fv_XPLgA42Wa5WUwl4xGYpHYmXclkyL2JVmsaI56EpM,2639
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=hkVtppv7jM1E5yN7ikHktKVvaRbux8OLTYDGv6xcdo0,21669
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=TVJK9C4_wlpkHy4b5Xp2UFJLPyR6URbx9Z-iPn6Sv7k,6309
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=WiKpmoq8cZ8JRvsjdIXYpH7JeW9F6U6srZzgSJYDk-Y,1935
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=EgVVeaf14UkbETuWHf4Do_0A2Rj2weFc7EFOKez5AgU,6901
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=JcNiRrWDYMgLUADehp1V4RvICx35jl3AeeJCbzpbRRg,3008
61
- credsweeper/filters/__init__.py,sha256=gBuGNWvKtYVdFnIZd8yVvKvIDb55JX9jhrQ1db1qqEY,3327
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=G9jPfMeVt9eH_DLlEGfnaLy3nb-o65Iipn56kZTumiM,1300
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=lqajrWbvVKZFVOrH6A-fC2I3ZuiGMI8AMwFOKkGHLbs,3638
86
- credsweeper/filters/value_github_check.py,sha256=GPYbUBCzaNfKWafpm_F_Hfq4QQwtFA_47l-zRq8u0m0,1503
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=If3oVEEBl5ChejCbnwar4BSSoYv55633dEsijIIPt40,2139
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=gszqhl0rL1c5TSPO2nbdbWPYwpqvserspL9GeuL7h9I,588
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=W0mZdNJ0YT8JdiUEPTwS1ljclqLc9wZNkoFcm4lTBJ8,668
116
- credsweeper/filters/group/weird_base64_token.py,sha256=ClhJqjlLf6XFlMCiixLTyuSE8XkK69rQg6ldjc4R2vY,857
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=P63kgpcNBcZpRkPb3oa-MZ3Iqa52Vg-G7oBTqyUhv1g,19051
121
- credsweeper/ml_model/ml_model.onnx,sha256=MWkFhV4UVNM3iho9Iu_GpRjACzjheaSK10qK1tEzdgs,12653703
122
- credsweeper/ml_model/ml_validator.py,sha256=mxmxil75wBWIgPGxNItWBXgm70YqggoAWxqaUOKcZVY,12945
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=hOprnj9BD8PFTmV_MjiPMLwbbPI0r7pYI4Qzbsmy1c4,1104
126
- credsweeper/ml_model/features/file_extension.py,sha256=IgxESm9RbKMhoqx0nEiMvq3aT-J5vwM_cGF_iwFCKUg,702
127
- credsweeper/ml_model/features/has_html_tag.py,sha256=SpobHmie49Mt9wbND_chjZDMB0UwS5C-IL8cC5eOx1Q,1131
128
- credsweeper/ml_model/features/is_secret_numeric.py,sha256=vU10cofvTCFWhHWKTu_1aODE2L4sCxkSoIWlLCXMqps,411
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=aRhCa5cU7yGykJSpL-n4qQGyxvNBZbat8WcMtkfLvdk,682
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=LqqNILB1cItoyRLVkrd0OmkhaTRvICaOHhcZ3OasofM,2006
135
- credsweeper/ml_model/features/word_in_path.py,sha256=h6yGORld8y7bkfzUHrutgTlSKNI0Gh0TEYYeYujUDEk,1139
136
- credsweeper/ml_model/features/word_in_postamble.py,sha256=Z0_5PA-2DeUfpPnuhhL1L0biBO62ZHc-uyQ87p0_NVU,947
137
- credsweeper/ml_model/features/word_in_preamble.py,sha256=YjQYAm2YVOzLv-1BBoU6LUiN-tl7MzmqDC_visJvMpc,1295
138
- credsweeper/ml_model/features/word_in_transition.py,sha256=uV86GVG8PiCxOAs-ZUtLEO5KKPe6bfPFIA-AfiaU0TQ,899
139
- credsweeper/ml_model/features/word_in_value.py,sha256=JBaBlMBHkAxAf0clpNcQQ8dUk6ekZTdk1xsj1mSmROE,581
140
- credsweeper/ml_model/features/word_in_variable.py,sha256=7JRZiN01AokjYeJJc_LpeMxGFQoJBXf9S8eQ-TahvTI,544
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=DhYU8pGvRn761v1ZGTE7NpsgEprso25s5Spqnr20vko,41983
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=M7Q-mReXhgN2Gvy9xWrHTdYZQNTvGqi_m3mZ2X9XUN4,10401
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=8PMz9Ps1NWoWts7ZQpGptymTQrGsPjabE5xmBDIzbOc,3504
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=IjcXO7_AVK8uaFFd9fYgf8IZZTJjOK2jWCb4gBrJV5U,28121
157
- credsweeper-1.12.1.dist-info/METADATA,sha256=WQ1lRB3uyYu6snmulCVHPENZ3v7v6Minxs1MhY1oDkE,10371
158
- credsweeper-1.12.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
159
- credsweeper-1.12.1.dist-info/entry_points.txt,sha256=SLGNZshvi3zpWPhVmRP-oDXRMRPBS4tzRDy6xYOXwqA,58
160
- credsweeper-1.12.1.dist-info/licenses/LICENSE,sha256=aU7mGjBKbmRHNLVXXzcPdKmTtBxRwDPtjflQRfN7fFg,1065
161
- credsweeper-1.12.1.dist-info/RECORD,,
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)