diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 4d3c980dc..78556d277 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -39,11 +39,11 @@ jobs: path: data key: cred-data-${{ hashFiles('checksums.md5') }} - - name: Set up Python 3.8 + - name: Set up Python 3.10 if: steps.cache-data.outputs.cache-hit != 'true' uses: actions/setup-python@v4 with: - python-version: "3.8" + python-version: "3.10" - name: Update PIP run: python -m pip install --upgrade pip @@ -97,10 +97,10 @@ jobs: if: steps.cache-data.outputs.cache-hit == 'true' run: ls -al . && ls -al data - - name: Set up Python 3.8 + - name: Set up Python 3.10 uses: actions/setup-python@v4 with: - python-version: "3.8" + python-version: "3.10" - name: Update PIP run: python -m pip install --upgrade pip @@ -114,19 +114,14 @@ jobs: ref: ${{ github.event.pull_request.head.sha }} path: temp/CredSweeper - - name: Patch benchmark for PR work - run: | - sed -i 's|CREDSWEEPER = "https://github.com/Samsung/CredSweeper.git"|CREDSWEEPER = "dummy://github.com/Samsung/CredSweeper.git"|' benchmark/common/constants.py - grep --with-filename --line-number 'dummy://github.com/Samsung/CredSweeper.git' benchmark/common/constants.py - - name: Install CredSweeper run: | python -m pip install temp/CredSweeper - credsweeper_head= + python -m credsweeper --banner - name: Run CredSweeper tool run: | - credsweeper --banner --jobs $(nproc) --path data --save-json report.${{ github.event.pull_request.head.sha }}.json | tee credsweeper.${{ github.event.pull_request.head.sha }}.log + credsweeper --banner --log info --jobs $(nproc) --path data --save-json report.${{ github.event.pull_request.head.sha }}.json | tee credsweeper.${{ github.event.pull_request.head.sha }}.log - name: Run Benchmark run: | @@ -160,14 +155,14 @@ jobs: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # performance_benchmark: - # put the benchmark in single job to keep constant environment during test + # put the benchmark in single job to keep constant environment during test python 3.8 is not applicable needs: [ download_data ] runs-on: ubuntu-latest strategy: fail-fast: false matrix: - python-version: [ "3.8", "3.9", "3.10", "3.11" ] + python-version: [ "3.9", "3.10", "3.11" ] steps: @@ -197,7 +192,7 @@ jobs: - name: Exclude very huge data if: steps.cache-data.outputs.cache-hit == 'true' - run: rm -rf data/8* data/7* data/a* data/2* data/0* data/f* data/b* data/d* + run: rm -rf data/0* data/2* data/7* data/8* data/a* data/b* data/d* data/e* data/f* - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 @@ -292,7 +287,7 @@ jobs: exit_code=0 LOW_DELTA=10 THRESHOLD=250 - + # RELEASE if [ ${RELEASE_TIME} -le ${HEAD_TIME} ]; then d=$(( 1000 * ( ${HEAD_TIME} - ${RELEASE_TIME} ) / ${RELEASE_TIME} )) @@ -316,7 +311,7 @@ jobs: echo "Speed-up." fi fi - + # BASE if [ ${BASE_TIME} -le ${HEAD_TIME} ]; then d=$(( 1000 * ( ${HEAD_TIME} - ${BASE_TIME} ) / ${BASE_TIME} )) @@ -340,10 +335,11 @@ jobs: echo "Speed-up." fi fi - + exit ${exit_code} # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + experiment: # the ml train test is placed here to use cached data set needs: [ download_data ] @@ -384,11 +380,11 @@ jobs: mv data ${{ github.workspace }}/CredData/ mv meta ${{ github.workspace }}/CredData/ - - name: Set up Python 3.8 + - name: Set up Python 3.10 if: steps.cache-data.outputs.cache-hit != 'true' uses: actions/setup-python@v3 with: - python-version: "3.8" + python-version: "3.10" - name: Update PIP run: python -m pip install --upgrade pip @@ -419,10 +415,8 @@ jobs: # check whether credsweeper is available as module python -m credsweeper --banner # use only 2 epochs for the test - sed -i 's/epochs=42,/epochs=2,/' main.py + sed -i 's/max_epochs = .*/max_epochs = 2/' main.py python main.py --data ${{ github.workspace }}/CredData -j $(( 2 * $(nproc) )) - ls -al results #dbg - python -m tf2onnx.convert --saved-model $(find results -mindepth 1 -maxdepth 1 -type d) --output ../credsweeper/ml_model/ml_model.onnx --verbose # dbg git diff # crc32 should be changed @@ -435,24 +429,34 @@ jobs: exit 1 fi -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # run_doc_benchmark: runs-on: ubuntu-latest - if: ${{ 'Samsung/CredSweeper' == github.event.pull_request.head.repo.full_name }} + if: ${{ 'push' == github.event_name }} or ${{ 'Samsung/CredSweeper' == github.event.pull_request.head.repo.full_name }} steps: - - name: Checkout CredSweeper + - name: Checkout CredSweeper PR if: ${{ 'pull_request' == github.event_name }} uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} + - name: Checkout CredSweeper HEAD + if: ${{ 'push' == github.event_name }} + uses: actions/checkout@v4 + with: + ref: ${{ github.event.head }} + - name: Send cURL request with the commit SHA - if: ${{ 'pull_request' == github.event_name }} run: | - COMMIT_SHA=$(git rev-parse HEAD) - curl -X POST ${{ secrets.SLACK_URL }} \ - --data-urlencode \ - "payload={'text':'[BMT Request] ${{ github.event.repository.html_url }}/commit/${COMMIT_SHA}'}" + if [[ "${{ secrets.SLACK_URL }}" =~ http.*/.*/.* ]]; then + COMMIT_SHA=$(git rev-parse HEAD) + echo ${COMMIT_SHA} + curl -X POST ${{ secrets.SLACK_URL }} \ + --data-urlencode \ + "payload={'text':'[BMT Request] ${{ github.event.repository.html_url }}/commit/${COMMIT_SHA}'}" + else + echo "secrets.SLACK_URL is not available" + fi -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 69892737a..def7384f8 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -58,7 +58,7 @@ jobs: - name: Check ml_model.onnx integrity if: ${{ always() && steps.code_checkout.conclusion == 'success' }} run: | - md5sum --binary credsweeper/ml_model/ml_model.onnx | grep 57ec152f6aa740456c742ecd5e7d9ef5 + md5sum --binary credsweeper/ml_model/ml_model.onnx | grep 62d92ab2f91a18e861d846a7b8a0c3a7 # # # Python setup @@ -196,9 +196,9 @@ jobs: file_crc32_int=$((16#${file_crc32_hex})) crc32_int=$(( ${crc32_int} ^ ${file_crc32_int} )) done - version_with_crc="$(credsweeper --version | head -1) crc32:$(printf '%x' ${crc32_int})" + version_with_crc="$(python -m credsweeper --version | head -1) crc32:$(printf '%x' ${crc32_int})" echo "version_with_crc = '${version_with_crc}'" - banner=$(credsweeper --banner --path requirements.txt | head -1) + banner=$(python -m credsweeper --banner | head -1) echo "banner = '${banner}'" if ! [ -n "${version_with_crc}" ] && [ -n "${banner}" ] && [ "${version_with_crc}" == "${banner}" ]; then echo "'${version_with_crc}' != '${banner}'" diff --git a/README.md b/README.md index 3e4897532..7cf9ae973 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ [![Test](https://github.com/Samsung/CredSweeper/actions/workflows/test.yml/badge.svg)](https://github.com/Samsung/CredSweeper/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/Samsung/CredSweeper/branch/main/graph/badge.svg)](https://codecov.io/gh/Samsung/CredSweeper) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6055/badge)](https://bestpractices.coreinfrastructure.org/projects/6055) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/Samsung/CredSweeper/badge)](https://api.securityscorecards.dev/projects/github.com/Samsung/CredSweeper) diff --git a/SECURITY.md b/SECURITY.md index 63a967df8..3d9e5418f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,8 +4,8 @@ | Version | Supported | |---------|--------------------| -| 1.6.x | :white_check_mark: | -| <1.6.x | :x: | +| 1.8.x | :white_check_mark: | +| <1.8.x | :x: | ## Reporting a Vulnerability diff --git a/cicd/benchmark.txt b/cicd/benchmark.txt index ac4ea0af2..72246106f 100644 --- a/cicd/benchmark.txt +++ b/cicd/benchmark.txt @@ -1,44 +1,44 @@ -DATA: 16998279 interested lines. MARKUP: 63222 items +DATA: 16348035 interested lines. MARKUP: 62567 items FileType FileNumber ValidLines Positives Negatives Templates --------------- ------------ ------------ ----------- ----------- ----------- - 194 28318 64 430 87 + 194 28318 66 427 87 .1 2 641 2 5 .admx 1 26 1 -.adoc 1 158 11 6 1 +.adoc 1 158 13 6 1 .api 2 118 4 -.asciidoc 96 14471 52 348 27 -.axaml 5 286 6 -.backup 1 62 1 1 +.asciidoc 96 14471 51 348 27 +.axaml 5 286 5 +.backup 1 62 2 1 .bash 2 2158 2 1 -.bat 4 233 1 13 2 -.bats 15 2804 8 56 9 +.bat 4 233 14 2 +.bats 15 2804 14 50 9 .bazel 3 424 8 .build 2 40 3 .bundle 4 1512 570 .bzl 3 2503 11 -.c 179 284009 16 940 5 -.cc 30 30656 624 1 +.c 179 284009 9 943 5 +.cc 29 30562 622 1 .cf 3 126 2 1 .cfg 1 385 1 1 -.cjs 1 725 3 4 +.cjs 1 725 3 6 .clj 2 133 2 .cljc 5 2421 12 .cls 1 657 1 .cmd 4 401 2 3 -.cnf 8 858 18 46 18 +.cnf 8 858 18 45 18 .coffee 1 585 2 -.conf 61 4954 61 74 48 +.conf 60 4945 54 71 53 .config 20 492 16 33 1 .cpp 15 5688 2 61 .creds 1 10 1 1 .crlf 1 27 1 .crt 2 4979 253 -.cs 269 82442 120 912 94 +.cs 268 82410 158 907 94 .cshtml 5 180 12 .csp 3 379 11 .csproj 1 14 1 .css 6 13564 10 -.csv 1 109 77 +.csv 1 109 78 .dart 2 22 2 .deprecated 1 126 1 .development 1 5 1 @@ -52,69 +52,68 @@ FileType FileNumber ValidLines Positives Negatives Templat .env 10 136 11 3 17 .erb 13 323 27 .erl 4 96 8 -.ex 25 4968 3 105 5 -.example 17 1838 69 32 62 -.exs 24 4842 3 187 4 +.ex 25 4968 5 105 5 +.example 17 1838 75 38 54 +.exs 24 4842 8 190 4 .ext 5 211 1 4 2 -.fsproj 1 75 1 +.fsproj 1 75 1 1 .g4 2 201 2 .gd 1 37 1 .gml 3 3075 26 .gni 3 5017 18 -.go 1084 569469 664 4351 709 +.go 1080 566476 673 4319 741 .golden 5 1168 1 14 29 .gradle 45 3265 4 91 100 -.graphql 8 445 1 13 +.graphql 7 420 13 .graphqls 1 30 1 -.groovy 23 5011 24 211 1 -.h 11 2038 38 +.groovy 22 4986 24 215 1 +.h 9 1958 36 .haml 9 191 16 .hbs 2 54 3 -.hs 17 4509 37 71 5 -.html 53 15327 14 115 18 -.idl 2 777 4 -.iml 6 699 38 -.in 6 2130 4 81 12 +.hs 14 4140 31 72 5 +.html 53 15327 22 115 18 +.idl 2 777 1 4 +.iml 6 699 36 +.in 6 2130 3 78 12 .inc 2 56 2 1 -.ini 11 1437 24 12 18 -.ipynb 1 134 3 -.j 1 241 4 -.j2 31 5601 8 214 10 -.java 621 134132 311 1348 169 -.jenkinsfile 1 58 1 7 +.ini 11 1437 25 12 18 +.ipynb 1 134 5 +.j 1 241 2 2 +.j2 30 5530 6 213 10 +.java 621 134132 359 1360 170 +.jenkinsfile 1 58 2 7 .jinja2 1 64 2 -.js 658 536388 494 2628 338 -.json 860 13670750 817 10952 139 +.js 659 536413 536 2635 330 +.json 850 13046270 1074 10778 140 .jsp 13 3202 1 42 .jsx 7 857 19 -.jwt 6 8 7 +.jwt 1 1 2 .key 83 2737 70 14 -.kt 123 20774 53 383 2 -.l 1 982 2 -.las 1 6656 48 -.lasso 1 230 7 +.kt 123 20774 67 384 3 +.l 1 982 1 +.las 1 6656 46 +.lasso 1 230 6 .lasso9 1 164 5 .ldif 2 286 20 .ldiff 1 20 1 -.ldml 1 6656 48 +.ldml 1 6656 46 .leex 1 9 2 .less 4 3023 12 .libsonnet 2 210 1 11 .list 2 15 2 .lkml 1 43 1 .lock 24 160912 144 -.log 2 199 2 89 -.lua 10 1924 3 37 3 -.m 16 13358 8 147 3 -.manifest 3 102 3 -.map 2 2 2 +.log 2 199 38 52 +.lua 10 1924 37 3 +.m 16 13358 11 152 3 +.manifest 3 102 9 3 .markdown 3 139 3 1 .markerb 3 12 3 .marko 1 21 2 -.md 679 149755 785 2546 660 +.md 674 149399 722 2365 662 .mdx 3 549 7 .mjml 1 18 1 -.mjs 22 4424 108 310 +.mjs 22 4424 78 343 .mk 1 5878 16 .ml 1 1856 24 .mlir 2 1596 19 @@ -123,41 +122,41 @@ FileType FileNumber ValidLines Positives Negatives Templat .mqh 1 1023 2 .msg 1 26644 1 1 .mysql 1 36 2 -.ndjson 2 5006 49 324 +.ndjson 2 5006 70 266 2 .nix 4 211 12 .nolint 1 2 1 .odd 1 1281 57 .oracle 1 9 1 .p8 4 64 4 .pan 2 48 4 -.patch 4 109405 27 +.patch 4 109405 4 27 .pbxproj 1 941 1 .pem 48 1169 47 8 -.php 371 75710 152 1833 62 +.php 371 75710 131 1769 80 .pl 16 14727 6 47 .pm 3 744 8 .po 3 2994 15 -.pod 9 1859 8 25 +.pod 9 1859 2 24 .pony 1 83 4 .postinst 2 354 4 16 .pp 10 563 23 .ppk 1 45 37 .private 1 15 1 .proj 1 85 3 -.properties 48 1621 59 28 31 -.proto 5 5768 57 -.ps1 17 8618 69 2 +.properties 48 1621 53 28 33 +.proto 5 5768 2 58 +.ps1 16 8509 15 67 2 .ps1xml 1 5022 1 .pug 2 193 2 .purs 1 69 4 .pxd 1 150 5 2 -.py 897 293354 661 3534 770 +.py 890 291553 685 3456 729 .pyi 4 1361 9 .pyp 1 167 1 .pyx 2 1094 21 .r 4 62 6 3 1 .rake 2 51 2 -.rb 862 131917 239 3462 611 +.rb 860 131838 259 3451 612 .re 1 31 1 .red 1 159 1 .release 1 13 4 @@ -167,104 +166,101 @@ FileType FileNumber ValidLines Positives Negatives Templat .rnh 1 1354 3 2 .rno 1 7229 2 .rrc 39 1404 514 -.rs 31 9855 2 237 11 +.rs 31 9855 2 238 11 .rsc 1 691 1 -.rsp 16 7101 23 11 28 -.rst 87 34151 62 360 67 +.rsp 16 7101 19 10 28 +.rst 86 33980 69 358 68 .rules 1 6 2 -.sample 2 25 1 7 4 -.sbt 3 570 7 2 -.scala 40 5071 13 102 +.sample 2 25 3 4 4 +.sbt 3 570 6 2 +.scala 40 5071 22 102 .scss 16 8553 32 1 .secrets 1 11 1 -.sh 144 21573 63 474 30 +.sh 143 21525 51 474 30 .slim 1 153 2 2 -.sln 1 306 2 .smali 1 775 12 -.snap 3 1708 1 34 2 +.snap 3 1708 9 30 2 .spec 2 332 2 .spin 1 565 1 -.sql 28 15884 29 572 4 +.sql 27 6606 126 62 4 .storyboard 20 1802 401 .strings 20 1240 184 .stub 3 84 6 .sublime-keymap 1 3 1 .sum 37 22854 283 .svg 1 638 12 -.swift 6 278 16 -.t 9 1767 27 58 14 +.t 9 1767 28 56 14 .td 2 14002 6 -.template 19 1633 5 42 11 +.template 19 1633 4 42 11 .test 2 24 25 4 -.testsettings 1 21 5 +.testsettings 1 21 1 5 .tf 21 1377 3 32 2 -.tfstate 4 307 25 10 +.tfstate 4 307 22 11 4 .tfvars 1 31 3 3 .tl 2 2161 165 2 .tmpl 5 336 3 9 .token 1 1 3 -.toml 83 2379 55 72 172 +.toml 83 2379 54 73 172 .tpl 1 43 1 .travis 1 34 4 3 1 -.ts 585 106846 169 1927 204 -.tsx 55 9846 1 128 5 -.ttar 2 6050 8 3 -.txt 444 78553 1826 14281 49 +.ts 583 106730 158 1935 203 +.tsx 54 7914 1 124 5 +.ttar 1 452 1 +.txt 440 78102 1861 14251 50 .utf8 1 77 2 .vsixmanifest 1 36 1 -.vsmdi 1 6 1 +.vsmdi 1 6 2 .vue 50 8736 1 183 1 -.xaml 21 8103 174 +.xaml 21 8103 175 .xcscheme 1 109 6 .xib 11 503 174 .xml 9 689 9 .xsl 1 311 1 -.yaml 149 20563 139 383 44 -.yml 418 36162 437 920 374 +.yaml 137 19004 128 356 44 +.yml 418 36162 515 910 384 .zsh 6 872 12 .zsh-theme 1 97 1 -TOTAL: 10335 16998279 8097 60877 5159 -credsweeper result_cnt : 7520, lost_cnt : 0, true_cnt : 6817, false_cnt : 703 +TOTAL: 10259 16348035 8706 59679 5182 +credsweeper result_cnt : 7664, lost_cnt : 0, true_cnt : 7472, false_cnt : 192 Rules Positives Negatives Templates Reported TP FP TN FN FPR FNR ACC PRC RCL F1 ------------------------------ ----------- ----------- ----------- ---------- ---- ---- ----- ---- -------- -------- -------- -------- -------- -------- -API 117 3104 184 112 103 9 3279 14 0.002737 0.119658 0.993245 0.919643 0.880342 0.899563 -AWS Client ID 163 13 0 154 154 0 13 9 0.000000 0.055215 0.948864 1.000000 0.944785 0.971609 -AWS Multi 71 12 0 83 71 11 1 0 0.916667 0.000000 0.867470 0.865854 1.000000 0.928105 -AWS S3 Bucket 61 25 0 87 61 24 1 0 0.960000 0.000000 0.720930 0.717647 1.000000 0.835616 -Atlassian Old PAT token 27 211 3 10 3 7 207 24 0.032710 0.888889 0.871369 0.300000 0.111111 0.162162 -Auth 318 2750 87 308 269 39 2798 49 0.013747 0.154088 0.972108 0.873377 0.845912 0.859425 -Azure Access Token 19 0 0 0 0 0 19 1.000000 0.000000 0.000000 +API 131 3126 185 111 109 2 3309 22 0.000604 0.167939 0.993027 0.981982 0.832061 0.900826 +AWS Client ID 167 18 0 160 160 0 18 7 0.000000 0.041916 0.962162 1.000000 0.958084 0.978593 +AWS Multi 75 14 0 87 75 11 3 0 0.785714 0.000000 0.876404 0.872093 1.000000 0.931677 +AWS S3 Bucket 66 24 0 92 66 24 0 0 1.000000 0.000000 0.733333 0.733333 1.000000 0.846154 +Atlassian Old PAT token 27 208 3 12 3 8 203 24 0.037915 0.888889 0.865546 0.272727 0.111111 0.157895 +Auth 412 2723 76 371 353 18 2781 59 0.006431 0.143204 0.976020 0.951482 0.856796 0.901660 +Azure Access Token 19 0 0 12 12 0 0 7 0.368421 0.631579 1.000000 0.631579 0.774194 BASE64 Private Key 7 2 0 7 7 0 2 0 0.000000 0.000000 1.000000 1.000000 1.000000 1.000000 BASE64 encoded PEM Private Key 7 0 0 5 5 0 0 2 0.285714 0.714286 1.000000 0.714286 0.833333 -Bitbucket Client ID 147 1833 3 41 27 14 1822 120 0.007625 0.816327 0.932426 0.658537 0.183673 0.287234 -Bitbucket Client Secret 239 535 0 44 33 11 524 206 0.020561 0.861925 0.719638 0.750000 0.138075 0.233216 -Certificate 22 456 1 20 15 5 452 7 0.010941 0.318182 0.974948 0.750000 0.681818 0.714286 -Credential 31 130 74 29 29 0 204 2 0.000000 0.064516 0.991489 1.000000 0.935484 0.966667 +Bitbucket Client ID 142 1807 9 46 27 18 1798 115 0.009912 0.809859 0.932074 0.600000 0.190141 0.288770 +Bitbucket Client Secret 230 527 10 44 33 11 526 197 0.020484 0.856522 0.728814 0.750000 0.143478 0.240876 +Certificate 25 460 1 21 20 1 460 5 0.002169 0.200000 0.987654 0.952381 0.800000 0.869565 +Credential 94 154 74 90 90 0 228 4 0.000000 0.042553 0.987578 1.000000 0.957447 0.978261 Docker Swarm Token 2 0 0 2 2 0 0 0 0.000000 1.000000 1.000000 1.000000 1.000000 -Dropbox App secret 62 112 0 45 37 7 105 25 0.062500 0.403226 0.816092 0.840909 0.596774 0.698113 +Dropbox App secret 62 114 0 46 36 9 105 26 0.078947 0.419355 0.801136 0.800000 0.580645 0.672897 Facebook Access Token 0 1 0 0 0 1 0 0.000000 1.000000 Firebase Domain 6 1 0 7 6 1 0 0 1.000000 0.000000 0.857143 0.857143 1.000000 0.923077 Github Old Token 1 0 0 1 1 0 0 0 0.000000 1.000000 1.000000 1.000000 1.000000 -Gitlab Feed Token 189 465 89 61 47 13 541 142 0.023466 0.751323 0.791386 0.783333 0.248677 0.377510 -Gitlab Incoming Email Token 37 3 0 23 21 2 1 16 0.666667 0.432432 0.550000 0.913043 0.567568 0.700000 -Google API Key 10 1 0 12 10 1 0 0 1.000000 0.000000 0.909091 0.909091 1.000000 0.952381 +Gitlab Feed Token 188 451 87 60 47 12 526 141 0.022305 0.750000 0.789256 0.796610 0.250000 0.380567 +Gitlab Incoming Email Token 37 3 0 21 19 2 1 18 0.666667 0.486486 0.500000 0.904762 0.513514 0.655172 +Google API Key 12 0 0 12 12 0 0 0 0.000000 1.000000 1.000000 1.000000 1.000000 Google Multi 10 2 0 11 10 1 1 0 0.500000 0.000000 0.916667 0.909091 1.000000 0.952381 Google OAuth Access Token 3 0 0 3 3 0 0 0 0.000000 1.000000 1.000000 1.000000 1.000000 -Grafana Provisioned API Key 22 1 0 1 1 0 1 21 0.000000 0.954545 0.086957 1.000000 0.045455 0.086957 -IPv4 691 365 0 1004 691 302 63 0 0.827397 0.000000 0.714015 0.695871 1.000000 0.820665 -IPv6 33 135 0 33 33 0 135 0 0.000000 0.000000 1.000000 1.000000 1.000000 1.000000 -JSON Web Token 284 10 2 280 272 8 4 12 0.666667 0.042254 0.932432 0.971429 0.957746 0.964539 +Grafana Provisioned API Key 22 1 0 5 5 0 1 17 0.000000 0.772727 0.260870 1.000000 0.227273 0.370370 +JSON Web Token 170 61 0 131 131 0 61 39 0.000000 0.229412 0.831169 1.000000 0.770588 0.870432 Jira / Confluence PAT token 0 4 0 0 0 4 0 0.000000 1.000000 -Jira 2FA 7 6 0 3 3 0 6 4 0.000000 0.571429 0.692308 1.000000 0.428571 0.600000 -Key 427 7871 462 452 389 61 8272 38 0.007320 0.088993 0.988699 0.864444 0.911007 0.887115 -Nonce 43 89 0 60 32 28 61 11 0.314607 0.255814 0.704545 0.533333 0.744186 0.621359 +Jira 2FA 14 6 0 10 10 0 6 4 0.000000 0.285714 0.800000 1.000000 0.714286 0.833333 +Key 522 8453 464 452 447 5 8912 75 0.000561 0.143678 0.991525 0.988938 0.856322 0.917864 +Nonce 91 47 0 84 83 1 46 8 0.021277 0.087912 0.934783 0.988095 0.912088 0.948571 PEM Private Key 1019 1483 0 1023 1019 4 1479 0 0.002697 0.000000 0.998401 0.996090 1.000000 0.998041 -Password 1902 7425 2675 1648 1554 94 10006 348 0.009307 0.182965 0.963173 0.942961 0.817035 0.875493 -Salt 42 72 2 42 38 4 70 4 0.054054 0.095238 0.931034 0.904762 0.904762 0.904762 -Secret 1353 29656 873 1264 1235 29 30500 118 0.000950 0.087214 0.995389 0.977057 0.912786 0.943829 +Password 1841 7468 2724 1691 1637 54 10138 204 0.005298 0.110809 0.978559 0.968066 0.889191 0.926954 +Salt 45 73 2 39 39 0 75 6 0.000000 0.133333 0.950000 1.000000 0.866667 0.928571 +Secret 1365 28359 868 1237 1233 4 29223 132 0.000137 0.096703 0.995554 0.996766 0.903297 0.947733 Seed 1 6 0 0 0 6 1 0.000000 1.000000 0.857143 0.000000 Slack Token 4 1 0 4 4 0 1 0 0.000000 0.000000 1.000000 1.000000 1.000000 1.000000 -Token 553 3975 448 517 489 28 4395 64 0.006331 0.115732 0.981511 0.945841 0.884268 0.914019 +Token 612 3949 437 516 511 5 4381 101 0.001140 0.165033 0.978792 0.990310 0.834967 0.906028 Twilio API Key 0 5 2 0 0 7 0 0.000000 1.000000 -URL Credentials 167 117 254 143 143 0 371 24 0.000000 0.143713 0.955390 1.000000 0.856287 0.922581 - 8097 60877 5159 7539 6817 703 60174 1280 0.011548 0.158083 0.971250 0.906516 0.841917 0.873023 +URL Credentials 209 127 240 200 200 0 367 9 0.000000 0.043062 0.984375 1.000000 0.956938 0.977995 +UUID 1068 1 0 1058 1057 1 0 11 1.000000 0.010300 0.988775 0.999055 0.989700 0.994356 + 8706 59679 5182 7671 7472 192 59487 1234 0.003217 0.141741 0.979147 0.974948 0.858259 0.912889 diff --git a/credsweeper/__init__.py b/credsweeper/__init__.py index b4ab2f906..6355a1d79 100644 --- a/credsweeper/__init__.py +++ b/credsweeper/__init__.py @@ -20,4 +20,4 @@ '__version__' ] -__version__ = "1.6.4" +__version__ = "1.8.3" diff --git a/credsweeper/app.py b/credsweeper/app.py index 0e09ed2e4..9ff28622b 100644 --- a/credsweeper/app.py +++ b/credsweeper/app.py @@ -1,10 +1,8 @@ -import itertools import logging import multiprocessing import signal -import sys from pathlib import Path -from typing import Any, List, Optional, Union, Dict, Sequence +from typing import Any, List, Optional, Union, Dict, Sequence, Tuple import pandas as pd @@ -13,7 +11,7 @@ from credsweeper.common.constants import KeyValidationOption, Severity, ThresholdPreset from credsweeper.config import Config -from credsweeper.credentials import Candidate, CredentialManager +from credsweeper.credentials import Candidate, CredentialManager, CandidateKey from credsweeper.deep_scanner.deep_scanner import DeepScanner from credsweeper.file_handler.diff_content_provider import DiffContentProvider from credsweeper.file_handler.file_path_extractor import FilePathExtractor @@ -47,7 +45,7 @@ def __init__(self, sort_output: bool = False, use_filters: bool = True, pool_count: int = 1, - ml_batch_size: Optional[int] = 16, + ml_batch_size: Optional[int] = None, ml_threshold: Union[float, ThresholdPreset] = ThresholdPreset.medium, azure: bool = False, cuda: bool = False, @@ -107,7 +105,7 @@ def __init__(self, self.json_filename: Union[None, str, Path] = json_filename self.xlsx_filename: Union[None, str, Path] = xlsx_filename self.sort_output = sort_output - self.ml_batch_size = ml_batch_size + self.ml_batch_size = ml_batch_size if ml_batch_size and 0 < ml_batch_size else 16 self.ml_threshold = ml_threshold self.azure = azure self.cuda = cuda @@ -253,10 +251,7 @@ def scan(self, content_providers: Sequence[Union[DiffContentProvider, TextConten def __single_job_scan(self, content_providers: Sequence[Union[DiffContentProvider, TextContentProvider]]) -> None: """Performs scan in main thread""" - all_cred: List[Candidate] = [] - for i in content_providers: - candidates = self.file_scan(i) - all_cred.extend(candidates) + all_cred = self.files_scan(content_providers) if self.config.api_validation: api_validation = ApplyValidation() for cred in all_cred: @@ -278,16 +273,16 @@ def __multi_jobs_scan(self, content_providers: Sequence[Union[DiffContentProvide if "SILENCE" == self.__log_level: logging.addLevelName(60, "SILENCE") log_kwargs["level"] = self.__log_level + # providers_map: List[Sequence[Union[DiffContentProvider, TextContentProvider]]] = \ + # [content_providers[x::self.pool_count] for x in range(self.pool_count)] with multiprocessing.get_context("spawn").Pool(processes=self.pool_count, initializer=self.pool_initializer, initargs=(log_kwargs, )) as pool: try: - # Get list credentials for each file - scan_results_per_file = pool.map(self.file_scan, content_providers) - # Join all sublist into a single list - scan_results = list(itertools.chain(*scan_results_per_file)) - for cred in scan_results: - self.credential_manager.add_credential(cred) + for scan_results in pool.imap_unordered(self.files_scan, (content_providers[x::self.pool_count] + for x in range(self.pool_count))): + for cred in scan_results: + self.credential_manager.add_credential(cred) if self.config.api_validation: logger.info("Run API Validation") api_validation = ApplyValidation() @@ -295,7 +290,22 @@ def __multi_jobs_scan(self, content_providers: Sequence[Union[DiffContentProvide except KeyboardInterrupt: pool.terminate() pool.join() - sys.exit() + raise + pool.close() + pool.join() + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + + def files_scan( + self, # + content_providers: Sequence[Union[DiffContentProvider, TextContentProvider]]) -> List[Candidate]: + """Auxiliary method for scan one sequence""" + all_cred: List[Candidate] = [] + for i in content_providers: + candidates = self.file_scan(i) + all_cred.extend(candidates) + logger.info(f"Completed: processed {len(content_providers)} providers with {len(all_cred)} candidates") + return all_cred # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -334,34 +344,37 @@ def file_scan(self, content_provider: Union[DiffContentProvider, TextContentProv def post_processing(self) -> None: """Machine learning validation for received credential candidates.""" + if purged := self.credential_manager.purge_duplicates(): + logger.info(f"Purged {purged} duplicates") if self._use_ml_validation(): logger.info(f"Grouping {len(self.credential_manager.candidates)} candidates") - new_cred_list = [] + new_cred_list: List[Candidate] = [] cred_groups = self.credential_manager.group_credentials() - ml_cred_groups = [] + ml_cred_groups: List[Tuple[CandidateKey, List[Candidate]]] = [] for group_key, group_candidates in cred_groups.items(): - # Analyze with ML if all candidates in group require ML + # Analyze with ML if any candidate in group require ML for candidate in group_candidates: - if not candidate.use_ml: + if candidate.use_ml: + ml_cred_groups.append((group_key, group_candidates)) break else: - ml_cred_groups.append((group_key.value, group_candidates)) - continue - # If at least one of credentials in the group do not require ML - automatically report to user - for candidate in group_candidates: - candidate.ml_validation = KeyValidationOption.NOT_AVAILABLE - new_cred_list += group_candidates + # all candidates do not require ML + new_cred_list.extend(group_candidates) # prevent extra ml_validator creation if ml_cred_groups is empty if ml_cred_groups: logger.info(f"Run ML Validation for {len(ml_cred_groups)} groups") is_cred, probability = self.ml_validator.validate_groups(ml_cred_groups, self.ml_batch_size) for i, (_, group_candidates) in enumerate(ml_cred_groups): - if is_cred[i]: - for candidate in group_candidates: - candidate.ml_validation = KeyValidationOption.VALIDATED_KEY - candidate.ml_probability = probability[i] - new_cred_list += group_candidates + for candidate in group_candidates: + if candidate.use_ml: + if is_cred[i]: + candidate.ml_validation = KeyValidationOption.VALIDATED_KEY + candidate.ml_probability = probability[i] + new_cred_list.append(candidate) + else: + candidate.ml_validation = KeyValidationOption.NOT_AVAILABLE + new_cred_list.append(candidate) else: logger.info("Skipping ML validation due not applicable") diff --git a/credsweeper/common/constants.py b/credsweeper/common/constants.py index d14668802..292fee633 100644 --- a/credsweeper/common/constants.py +++ b/credsweeper/common/constants.py @@ -5,19 +5,23 @@ class KeywordPattern: """Pattern set of keyword types""" - key_left = r"(?P(([`'\"]+[^:='\"`}<>\\/&?]*|[^:='\"`}<>\s()\\/&?]*)" \ + key_left = r"(\\[nrt])?(?P(([`'\"]+[^:='\"`}<>\\/&?]*|[^:='\"`}<>\s()\\/&?]*)" \ r"(?P" # there will be inserted a keyword key_right = r")" \ r"[^:='\"`<>{?!&]*)[`'\"]*)" # - # Authentication scheme ( oauth | basic | bearer | apikey ) precedes to credential separator = r"\s*\]?\s*" \ - r"(?P:( [a-z]{3,9} )?=|:( oauth | basic | bearer | apikey | accesskey )?|=>|!=|===|==|=)" \ + r"(?P:( [a-z]{3,9}[?]? )?=" \ + r"|:|=>|!=|===|==|=)" \ r"((?!\s*ENC(\(|\[))(\s|\w)*\((\s|\w|=|\()*|\s*)" - value = r"(?P((b|r|br|rb|u|f|rf|fr|\\)?[`'\"])+)?" \ - r"(?P(?:\{[^}]{3,8000}\})|(?:<[^>]{3,8000}>)|" \ - r"(?(value_leftquote)(?:\\[tnrux0-7][0-9a-f]*|[^`'\"\\])|(?:\\n|\\r|\\?[^\s`'\"\\])){3,8000})" \ - r"(?P(\\?[`'\"])+)?" + # Authentication scheme ( oauth | basic | bearer | apikey ) precedes to credential + value = r"(?P((b|r|br|rb|u|f|rf|fr|\\{0,8})?[`'\"]){1,4})?" \ + r"( ?(oauth|bot|basic|bearer|apikey|accesskey) )?" \ + r"(?P" \ + r"(?(value_leftquote)(?:\\[tnrux0-7][0-9a-f]*|[^`'\"\\])|(?:\\n|\\r|\\?[^\s`'\"\\,;])){3,8000}" \ + r"|(?:\{[^}]{3,8000}\})|(?:<[^>]{3,8000}>)" \ + r")" \ + r"(?(value_leftquote)(?P(\\{0,8}[`'\"]){1,4})?)" @classmethod def get_keyword_pattern(cls, keyword: str) -> re.Pattern: @@ -84,8 +88,13 @@ def get(confidence: Union[str, "Confidence"]) -> Optional["Confidence"]: class Base(Enum): """Stores types of character sets in lower case""" + base16upper = "base16upper" + base16lower = "base16lower" + base32 = "base32" base36 = "base36" base64 = "base64" + base64std = "base64std" + base64url = "base64url" hex = "hex" @@ -95,6 +104,10 @@ class Chars(Enum): # set of characters, hexadecimal numeral system (Base16). Upper- and lowercase HEX_CHARS = "0123456789ABCDEFabcdef" + # set of characters, hexadecimal numeral system (Base16). Uppercase + BASE16UPPER = "0123456789ABCDEF" + # set of characters, hexadecimal numeral system (Base16). Lowercase + BASE16LOWER = "0123456789abcdef" # set of 32 characters, used in Base32 encoding BASE32_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" # set of 36 characters, used in Base36 encoding @@ -157,7 +170,14 @@ class DiffRowType(Enum): MIN_VARIABLE_LENGTH = 1 MIN_SEPARATOR_LENGTH = 1 MIN_VALUE_LENGTH = 4 +# if the line is oversize - it will be scanned by chunks with overlapping MAX_LINE_LENGTH = 8000 +# the size for overlapping chunks must be less than MAX_LINE_LENGTH +CHUNK_SIZE = 4000 +OVERLAP_SIZE = 1000 +CHUNK_STEP_SIZE = CHUNK_SIZE - OVERLAP_SIZE +# ML hunk size to limit of variable or value size and get substring near value +ML_HUNK = 80 """ values according https://docs.python.org/3/library/codecs.html """ UTF_8 = "utf_8" UTF_16 = "utf_16" diff --git a/credsweeper/common/keyword_checklist.py b/credsweeper/common/keyword_checklist.py index 1a02b489f..63f37c2e8 100644 --- a/credsweeper/common/keyword_checklist.py +++ b/credsweeper/common/keyword_checklist.py @@ -1,5 +1,5 @@ from functools import cached_property -from typing import Set +from typing import Set, List from credsweeper.app import APP_PATH @@ -13,6 +13,8 @@ class KeywordChecklist: def __init__(self) -> None: # used suggested text read style. split() is preferred because it strips 0x0A on end the file + self.__keyword_list = self.KEYWORD_PATH.read_text().split() + self.__keyword_list.sort(key=str.__len__, reverse=True) self.__keyword_set = set(self.KEYWORD_PATH.read_text().split()) # The list of morphemes can be combined to form words. # The value is considered a variable if at least two exist. @@ -20,14 +22,14 @@ def __init__(self) -> None: @cached_property def keyword_set(self) -> Set[str]: - """Get set with keywords. - - Return: - Set of strings - - """ + """Get set with keywords""" return self.__keyword_set + @cached_property + def keyword_list(self) -> List[str]: + """Get list with keywords in descended order of length""" + return self.__keyword_list + @cached_property def keyword_len(self) -> int: """Length of keyword_set""" diff --git a/credsweeper/common/keyword_checklist.txt b/credsweeper/common/keyword_checklist.txt index 8bfe417dc..b3ad6c854 100644 --- a/credsweeper/common/keyword_checklist.txt +++ b/credsweeper/common/keyword_checklist.txt @@ -39,6 +39,7 @@ animation another anony apache +api appearance apple application @@ -102,6 +103,7 @@ border bottle bottom bound +brain branch brand break @@ -200,6 +202,7 @@ continue control convenience convert +copy cookie coordinator corner @@ -285,6 +288,7 @@ editing editor effect either +elastic element email empty @@ -297,7 +301,7 @@ ensure entity entries entry -environ +environment equal equals erase @@ -331,6 +335,7 @@ feedback fetch field figure +file files filename filter @@ -533,6 +538,7 @@ notice notification null number +oauth object oblique observe @@ -581,6 +587,7 @@ patch paths pattern pause +peer payload payment pending @@ -602,6 +609,7 @@ plain platform player point +pool policy portal portfolio @@ -754,6 +762,11 @@ session setting setter setup +sha256 +sha1 +sha2 +sha224 +sha512 shadow shallow shape @@ -765,6 +778,7 @@ showing shown shutdown sidebar +signature sign similar simple @@ -786,6 +800,7 @@ solid sorted source space +spaces spacing spark speak @@ -845,7 +860,7 @@ tablet target tasks teacher -teams +team temp terms test @@ -932,6 +947,7 @@ warning watch waves weight +whatever where whether which @@ -939,6 +955,7 @@ while white width window +with within without world @@ -949,6 +966,7 @@ written xxxxx yellow yield +your zeros .json .xml diff --git a/credsweeper/credentials/candidate.py b/credsweeper/credentials/candidate.py index 773e397e7..8800a283e 100644 --- a/credsweeper/credentials/candidate.py +++ b/credsweeper/credentials/candidate.py @@ -47,6 +47,26 @@ def __init__(self, self.ml_validation = KeyValidationOption.NOT_AVAILABLE self.ml_probability: Optional[float] = None + def compare(self, other: 'Candidate') -> bool: + """Comparison method - checks only result of final cred""" + if self.rule_name == other.rule_name \ + and self.severity == other.severity \ + and self.confidence == other.confidence \ + and self.api_validation == other.api_validation \ + and self.use_ml == other.use_ml \ + and self.ml_validation == other.ml_validation \ + and self.ml_probability == other.ml_probability \ + and len(self.line_data_list) == len(other.line_data_list): + for i, j in zip(self.line_data_list, other.line_data_list): + if i.compare(j): + continue + else: + break + else: + # all line_data are equal + return True + return False + @staticmethod def _encode(value: Any) -> Any: """Encode value to the base string ascii @@ -76,6 +96,9 @@ def __str__(self) -> str: f" | api_validation: {self.api_validation.name}" \ f" | ml_validation: {self.ml_validation.name}" + def __repr__(self): + return str(self) + def to_json(self) -> Dict: """Convert credential candidate object to dictionary. @@ -123,8 +146,8 @@ def to_dict_list(self) -> List[dict]: def get_dummy_candidate(cls, config: Config, file_path: str, file_type: str, info: str): """Create dummy instance to use in searching file by extension""" return cls( # - line_data_list=[LineData(config, "dummy line", -1, 0, file_path, file_type, info, re.compile(".*"))], - patterns=[re.compile(".*")], # + line_data_list=[LineData(config, "dummy line", -1, 0, file_path, file_type, info, re.compile(r".*"))], + patterns=[re.compile(r".*")], # rule_name="Dummy candidate", # severity=Severity.INFO, # config=config, # diff --git a/credsweeper/credentials/candidate_key.py b/credsweeper/credentials/candidate_key.py index 509ca7ec5..4dd65b151 100644 --- a/credsweeper/credentials/candidate_key.py +++ b/credsweeper/credentials/candidate_key.py @@ -12,8 +12,10 @@ class CandidateKey: def __init__(self, line_data: LineData): self.path: str = line_data.path self.line_num: int = line_data.line_num - self.value: str = line_data.value - self.key: Tuple[str, int, str] = (self.path, self.line_num, self.value) + self.value_start: int = line_data.value_start + self.value_end: int = line_data.value_end + self.key: Tuple[str, int, int, int] = (self.path, self.line_num, self.value_start, self.value_end) + self.__line = line_data.line def __hash__(self): return hash(self.key) @@ -23,3 +25,6 @@ def __eq__(self, other): def __ne__(self, other): return not (self == other) + + def __repr__(self) -> str: + return f"{self.key}:{self.__line}" diff --git a/credsweeper/credentials/credential_manager.py b/credsweeper/credentials/credential_manager.py index 92410fe35..2f1dec2e0 100644 --- a/credsweeper/credentials/credential_manager.py +++ b/credsweeper/credentials/credential_manager.py @@ -1,9 +1,12 @@ +import logging from multiprocessing import Manager -from typing import List +from typing import List, Dict, Tuple from credsweeper.credentials import Candidate from credsweeper.credentials.candidate_group_generator import CandidateGroupGenerator, CandidateKey +logger = logging.getLogger(__name__) + class CredentialManager: """The manager allows you to store, add and delete separate credit candidates. @@ -52,6 +55,38 @@ def remove_credential(self, candidate: Candidate) -> None: """ self.candidates.remove(candidate) + def purge_duplicates(self) -> int: + """Purge duplicates candidates which may appear in overlaps during long line scan. + + Returns: number of removed duplicates + """ + candidates_dict: Dict[Tuple[str, str, str, int, int, int, int, int, int, int], Candidate] = {} + before = len(self.candidates) + for i in self.candidates: + ld = i.line_data_list[0] + candidate_key = ( + i.rule_name, # + ld.path, # + ld.info, # + ld.line_pos, # + ld.variable_start, # + ld.variable_end, # + ld.separator_start, # + ld.separator_end, # + ld.value_start, # + ld.value_end) + if candidate_key in candidates_dict: + # check precisely - compare with the values + candidate_dict = candidates_dict[candidate_key] + if not candidate_dict.compare(i): + ld_ = candidate_dict.line_data_list[0] + logger.warning(f"check {ld_.variable, ld_.value} and {ld.variable, ld.value}") + else: + candidates_dict[candidate_key] = i + self.candidates = list(candidates_dict.values()) + after = len(self.candidates) + return before - after + def group_credentials(self) -> CandidateGroupGenerator: """Join candidates that reference same secret value in the same line. diff --git a/credsweeper/credentials/line_data.py b/credsweeper/credentials/line_data.py index 80e29ec64..d407b657a 100644 --- a/credsweeper/credentials/line_data.py +++ b/credsweeper/credentials/line_data.py @@ -1,7 +1,10 @@ import contextlib import re +import string +from functools import cached_property from typing import Any, Dict, Optional, Tuple +from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.config import Config from credsweeper.utils import Util from credsweeper.utils.entropy_validator import EntropyValidator @@ -25,11 +28,17 @@ class LineData: """ - comment_starts = ["//", "*", "#", "/*", "|\\w+?\\>|\\&)") + line_endings = re.compile(r"\\{1,8}[nr]") + url_param_split = re.compile(r"(%|\\u(00){0,2})(26|3f)", flags=re.IGNORECASE) # some symbols e.g. double quotes cannot be in URL string https://www.ietf.org/rfc/rfc1738.txt # \ - was added for case of url in escaped string \u0026amp; - means escaped & in HTML - url_detect_regex = re.compile(r".*\w{3,33}://[\w;,/?:@&=+$%.!~*'()#\\-]+$") + url_scheme_part_regex = re.compile(r"[0-9A-Za-z.-]{3}") + url_chars_not_allowed_pattern = re.compile(r'[\s"<>\[\]^~`{|}]') + url_value_pattern = re.compile(r'[^\s&;"<>\[\]^~`{|}]+[&;][^\s=;"<>\[\]^~`{|}]{3,80}=[^\s;&="<>\[\]^~`{|}]{1,80}') + variable_strip_pattern = string.whitespace + """,'"-;""" INITIAL_WRONG_POSITION = -3 EXCEPTION_POSITION = -2 @@ -68,13 +77,27 @@ def __init__( self.variable_end = LineData.INITIAL_WRONG_POSITION self.value_leftquote: Optional[str] = None self.value_rightquote: Optional[str] = None + # is set when variable & value are in URL for any source type + self.url_part = False self.initialize(match_obj) + def compare(self, other: 'LineData') -> bool: + """Comparison method - skip whole line and checks only when variable and value are the same""" + if self.path == other.path \ + and self.info == other.info \ + and self.line_num == other.line_num \ + and self.value_start == other.value_start \ + and self.variable == other.variable \ + and self.value == other.value: + return True + else: + return False + def initialize(self, match_obj: Optional[re.Match] = None) -> None: """Apply regex to the candidate line and set internal fields based on match.""" if not isinstance(match_obj, re.Match) and isinstance(self.pattern, re.Pattern): - match_obj = self.pattern.search(self.line) + match_obj = self.pattern.search(self.line, endpos=MAX_LINE_LENGTH) if match_obj is None: return @@ -102,18 +125,37 @@ def get_span_from_match_obj(_match_obj: re.Match, group: str) -> Tuple[int, int] self.sanitize_variable() def sanitize_value(self): - """Clean found value from extra artifacts""" - _value = self.value - self.clean_url_parameters() - self.clean_bash_parameters() - self.check_value_pos(_value) - - def check_value_pos(self, value: str) -> None: - """checks and corrects value_start, value_end in case of self.value was shrink""" - if 0 <= self.value_start and 0 <= self.value_end and len(self.value) < len(value): - start = value.find(self.value) - self.value_start += start - self.value_end = self.value_start + len(self.value) + """Clean found value from extra artifacts. Correct positions if changed.""" + if self.variable and self.value and not self.is_well_quoted_value: + # sanitize is actual step for keyword pattern only + _value = self.value + self.clean_url_parameters() + self.clean_bash_parameters() + if 0 <= self.value_start and 0 <= self.value_end and len(self.value) < len(_value): + start = _value.find(self.value) + self.value_start += start + self.value_end = self.value_start + len(self.value) + + def check_url_part(self) -> bool: + """Determines whether value is part of url like line""" + line_before_value = self.line[:self.value_start] + url_pos = -1 + find_pos = 0 + while find_pos < self.value_start: + # find rightmost pattern + find_pos = line_before_value.find("://", find_pos) + if -1 == find_pos: + break + else: + url_pos = find_pos + find_pos += 3 + # whether the line has url start pattern + self.url_part = 3 <= url_pos + self.url_part &= bool(self.url_scheme_part_regex.match(line_before_value, pos=url_pos - 3, endpos=url_pos)) + self.url_part &= not self.url_chars_not_allowed_pattern.search(line_before_value, pos=url_pos + 3) + self.url_part |= self.line[self.variable_start - 1] in "?&" if 0 < self.variable_start else False + self.url_part |= bool(self.url_value_pattern.match(self.value)) + return self.url_part def clean_url_parameters(self) -> None: """Clean url address from 'query parameters'. @@ -121,34 +163,42 @@ def clean_url_parameters(self) -> None: If line seem to be a URL - split by & character. Variable should be right most value after & or ? ([-1]). And value should be left most before & ([0]) """ - line_before_value = self.line[:self.value_start] - if self.url_detect_regex.match(line_before_value): - if self.variable: - self.variable = self.variable.split('&')[-1].split('?')[-1].split(';')[-1] - if self.value: - self.value = self.value.split('&')[0].split(';')[0] + if self.check_url_part(): + # all checks have passed - line before the value may be a URL + self.variable = self.variable.rsplit('&')[-1].rsplit('?')[-1].rsplit(';')[-1] + self.value = self.value.split('&', maxsplit=1)[0].split(';', maxsplit=1)[0].split('#', maxsplit=1)[0] + if not self.variable.endswith("://"): + # skip sanitize in case of URL credential rule + value_spl = self.url_param_split.split(self.value) + if len(value_spl) > 1: + self.value = value_spl[0] def clean_bash_parameters(self) -> None: """Split variable and value by bash special characters, if line assumed to be CLI command.""" - if self.variable and self.variable.startswith("-") and self.value: + if self.variable.startswith("-"): value_spl = self.bash_param_split.split(self.value) # If variable name starts with `-` (usual case for args in CLI) # and value can be split by bash special characters if len(value_spl) > 1: self.value = value_spl[0] + if ' ' not in self.value and ("\\n" in self.value or "\\r" in self.value): + value_whsp = self.line_endings.split(self.value) + if len(value_whsp) > 1: + self.value = value_whsp[0] def sanitize_variable(self) -> None: - """Remove trailing spaces, dashes and quotations around the variable.""" + """Remove trailing spaces, dashes and quotations around the variable. Correct position.""" sanitized_var_len = 0 + variable = self.variable while self.variable and sanitized_var_len != len(self.variable): sanitized_var_len = len(self.variable) - # Remove trailing \s. Can happen if there are \s between variable and `=` character - self.variable = self.variable.strip() - # Remove trailing `-` at the variable name start. Usual case for CLI commands - self.variable = self.variable.strip("-") - # Remove trailing `'"`. Usual case for JSON data - self.variable = self.variable.strip('"') - self.variable = self.variable.strip("'") + self.variable = self.variable.strip(self.variable_strip_pattern) + if self.variable.endswith('\\'): + self.variable = self.variable[:-1] + if variable and len(self.variable) < len(variable) and 0 <= self.variable_start and 0 <= self.variable_end: + start = variable.find(self.variable) + self.variable_start += start + self.variable_end = self.variable_start + len(self.variable) def is_comment(self) -> bool: """Check if line with credential is a comment. @@ -163,6 +213,56 @@ def is_comment(self) -> bool: return True return False + @cached_property + def is_well_quoted_value(self) -> bool: + """Well quoted value - means the quotations must be equal""" + if self.value_leftquote and self.value_rightquote: + if 1 == len(self.value_leftquote): + leftquote = self.value_leftquote + else: + for q in self.quotation_marks: + if q in self.value_leftquote: + leftquote = q + break + else: + leftquote = "" + + if 1 == len(self.value_rightquote): + rightquote = self.value_rightquote + else: + for q in self.quotation_marks: + if q in self.value_rightquote: + rightquote = q + break + else: + rightquote = "" + + return bool(leftquote) and bool(rightquote) and leftquote == rightquote + + return False + + @cached_property + def is_quoted(self) -> bool: + """Check if variable and value in a quoted string. + + Return: + True if candidate in a quoted string, False otherwise + + """ + left_quote = None + if 0 < self.variable_start: + for i in self.line[:self.variable_start]: + if i in ('"', "'", '`'): + left_quote = i + break + right_quote = None + if len(self.line) > self.value_end: + for i in self.line[self.value_end:]: + if i in ('"', "'", '`'): + right_quote = i + break + return bool(left_quote) and bool(right_quote) and left_quote == right_quote + def is_source_file(self) -> bool: """Check if file with credential is a source code file or not (data, log, plain text). @@ -189,10 +289,13 @@ def is_source_file_with_quotes(self) -> bool: return True return False - def __repr__(self) -> str: + def __str__(self): return f"line: '{self.line}' | line_num: {self.line_num} | path: {self.path}" \ f" | value: '{self.value}' | entropy_validation: {EntropyValidator(self.value)}" + def __repr__(self): + return str(self) + def to_json(self) -> Dict: """Convert line data object to dictionary. @@ -214,6 +317,8 @@ def to_json(self) -> Dict: "value_start": self.value_start, "value_end": self.value_end, "variable": self.variable, + "variable_start": self.variable_start, + "variable_end": self.variable_end, "value_leftquote": self.value_leftquote, "value_rightquote": self.value_rightquote, "entropy_validation": EntropyValidator(self.value).to_dict() diff --git a/credsweeper/deep_scanner/bzip2_scanner.py b/credsweeper/deep_scanner/bzip2_scanner.py index ea862744f..0d33b44b1 100644 --- a/credsweeper/deep_scanner/bzip2_scanner.py +++ b/credsweeper/deep_scanner/bzip2_scanner.py @@ -1,6 +1,7 @@ import bz2 import logging from abc import ABC +from pathlib import Path from typing import List from credsweeper.credentials import Candidate @@ -22,10 +23,12 @@ def data_scan( """Extracts data from bzip2 archive and launches data_scan""" candidates = [] try: - new_path = data_provider.file_path if ".bz2" != Util.get_extension( - data_provider.file_path) else data_provider.file_path[:-4] + file_path = Path(data_provider.file_path) + new_path = file_path.as_posix() + if ".bz2" == file_path.suffix: + new_path = new_path[:-4] bzip2_content_provider = DataContentProvider(data=bz2.decompress(data_provider.data), - file_path=data_provider.file_path, + file_path=new_path, file_type=Util.get_extension(new_path), info=f"{data_provider.info}|BZIP2|{new_path}") new_limit = recursive_limit_size - len(bzip2_content_provider.data) diff --git a/credsweeper/deep_scanner/deep_scanner.py b/credsweeper/deep_scanner/deep_scanner.py index ac638f553..119f569f4 100644 --- a/credsweeper/deep_scanner/deep_scanner.py +++ b/credsweeper/deep_scanner/deep_scanner.py @@ -1,5 +1,6 @@ import datetime import logging +from pathlib import Path from typing import List, Optional, Any, Tuple, Union from credsweeper.common.constants import RECURSIVE_SCAN_LIMITATION @@ -71,7 +72,7 @@ def scanner(self) -> Scanner: return self.__scanner @staticmethod - def get_deep_scanners(data: bytes, file_type: Optional[str] = None) -> List[Any]: + def get_deep_scanners(data: bytes, file_type: str) -> List[Any]: """Returns possibly scan methods for the data depends on content""" deep_scanners: List[Any] = [] if Util.is_zip(data): @@ -136,7 +137,7 @@ def scan(self, data_provider = DataContentProvider(data=data, file_path=content_provider.file_path, file_type=content_provider.file_type, - info=content_provider.file_path) + info=Path(content_provider.file_path).as_posix()) # iterate for all possibly scanner methods WITHOUT ByteContentProvider for TextContentProvider scanner_classes = self.get_deep_scanners(data, content_provider.file_type) for scan_class in scanner_classes: @@ -174,7 +175,7 @@ def recursive_scan( candidates.append(dummy_candidate) else: # iterate for all possibly scanner methods - for scanner_classes in self.get_deep_scanners(data_provider.data): + for scanner_classes in self.get_deep_scanners(data_provider.data, data_provider.file_type): new_candidates = scanner_classes.data_scan(self, data_provider, depth, recursive_limit_size) augment_candidates(candidates, new_candidates) diff --git a/credsweeper/deep_scanner/gzip_scanner.py b/credsweeper/deep_scanner/gzip_scanner.py index e8ac2be9d..06e2321ca 100644 --- a/credsweeper/deep_scanner/gzip_scanner.py +++ b/credsweeper/deep_scanner/gzip_scanner.py @@ -2,12 +2,13 @@ import io import logging from abc import ABC +from pathlib import Path from typing import List +from credsweeper.utils import Util from credsweeper.credentials import Candidate from credsweeper.deep_scanner.abstract_scanner import AbstractScanner from credsweeper.file_handler.data_content_provider import DataContentProvider -from credsweeper.utils import Util logger = logging.getLogger(__name__) @@ -24,10 +25,12 @@ def data_scan( candidates = [] try: with gzip.open(io.BytesIO(data_provider.data)) as f: - new_path = data_provider.file_path if ".gz" != Util.get_extension( - data_provider.file_path) else data_provider.file_path[:-3] + file_path = Path(data_provider.file_path) + new_path = file_path.as_posix() + if ".gz" == file_path.suffix: + new_path = new_path[:-3] gzip_content_provider = DataContentProvider(data=f.read(), - file_path=data_provider.file_path, + file_path=new_path, file_type=Util.get_extension(new_path), info=f"{data_provider.info}|GZIP|{new_path}") new_limit = recursive_limit_size - len(gzip_content_provider.data) diff --git a/credsweeper/file_handler/analysis_target.py b/credsweeper/file_handler/analysis_target.py index f2b766d79..996718397 100644 --- a/credsweeper/file_handler/analysis_target.py +++ b/credsweeper/file_handler/analysis_target.py @@ -13,16 +13,31 @@ def __init__( lines: List[str], line_nums: List[int], descriptor: Descriptor, + line: Optional[str] = None, + offset: Optional[int] = None, ): self.__line_pos = line_pos self.__lines = lines self.__line_nums = line_nums self.__descriptor = descriptor + self.__line = line + self.__offset = offset + + @cached_property + def offset(self) -> Optional[int]: + """cached value""" + # when the offset is not None - it means that original line was split into chunks + return self.__offset @cached_property def line(self) -> str: """cached value""" - return self.__lines[self.__line_pos] + if self.__line is None: + # normal target + return self.__lines[self.__line_pos] + else: + # chunked target + return self.__line @cached_property def line_len(self) -> int: @@ -40,9 +55,14 @@ def line_strip_len(self) -> int: return len(self.line_strip) @cached_property - def line_strip_lower(self) -> str: + def line_lower(self) -> str: + """cached value""" + return self.line.lower() + + @cached_property + def line_lower_strip(self) -> str: """cached value""" - return self.line_strip.lower() + return self.line_lower.strip() @cached_property def lines(self) -> List[str]: diff --git a/credsweeper/file_handler/content_provider.py b/credsweeper/file_handler/content_provider.py index d8885526c..4bc6820e5 100644 --- a/credsweeper/file_handler/content_provider.py +++ b/credsweeper/file_handler/content_provider.py @@ -94,10 +94,16 @@ def lines_to_targets( if min_len > len(line.strip()): # Ignore target if stripped part is too short for all types continue - line_len = len(line) - if MAX_LINE_LENGTH < line_len: - # Ignore target if it's too long - logger.warning(f"Skipped oversize({line_len}) line in {self.descriptor.path}:{line_nums[line_pos]}") - continue - target = AnalysisTarget(line_pos, lines, line_nums, self.descriptor) - yield target + elif MAX_LINE_LENGTH < len(line): + for chunk_start, chunk_end in Util.get_chunks(len(line)): + target = AnalysisTarget( + line_pos=line_pos, # + lines=lines, # + line_nums=line_nums, # + descriptor=self.descriptor, # + line=line[chunk_start:chunk_end], # + offset=chunk_start) + yield target + else: + target = AnalysisTarget(line_pos, lines, line_nums, self.descriptor) + yield target diff --git a/credsweeper/filters/__init__.py b/credsweeper/filters/__init__.py index 0281003d5..a91119e63 100644 --- a/credsweeper/filters/__init__.py +++ b/credsweeper/filters/__init__.py @@ -2,19 +2,21 @@ from credsweeper.filters.line_git_binary_check import LineGitBinaryCheck from credsweeper.filters.line_specific_key_check import LineSpecificKeyCheck -from credsweeper.filters.separator_unusual_check import SeparatorUnusualCheck from credsweeper.filters.value_allowlist_check import ValueAllowlistCheck from credsweeper.filters.value_array_dictionary_check import ValueArrayDictionaryCheck from credsweeper.filters.value_atlassian_token_check import ValueAtlassianTokenCheck +from credsweeper.filters.value_azure_token_check import ValueAzureTokenCheck from credsweeper.filters.value_base32_data_check import ValueBase32DataCheck from credsweeper.filters.value_base64_data_check import ValueBase64DataCheck from credsweeper.filters.value_base64_encoded_pem_check import ValueBase64EncodedPem from credsweeper.filters.value_base64_key_check import ValueBase64KeyCheck +from credsweeper.filters.value_base64_part_check import ValueBase64PartCheck from credsweeper.filters.value_blocklist_check import ValueBlocklistCheck from credsweeper.filters.value_camel_case_check import ValueCamelCaseCheck from credsweeper.filters.value_couple_keyword_check import ValueCoupleKeywordCheck from credsweeper.filters.value_dictionary_keyword_check import ValueDictionaryKeywordCheck from credsweeper.filters.value_dictionary_value_length_check import ValueDictionaryValueLengthCheck +from credsweeper.filters.value_discord_bot_check import ValueDiscordBotCheck from credsweeper.filters.value_entropy_base32_check import ValueEntropyBase32Check from credsweeper.filters.value_entropy_base36_check import ValueEntropyBase36Check from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check @@ -22,18 +24,16 @@ from credsweeper.filters.value_first_word_check import ValueFirstWordCheck from credsweeper.filters.value_github_check import ValueGitHubCheck from credsweeper.filters.value_grafana_check import ValueGrafanaCheck +from credsweeper.filters.value_grafana_service_check import ValueGrafanaServiceCheck from credsweeper.filters.value_hex_number_check import ValueHexNumberCheck -from credsweeper.filters.value_ip_check import ValueIPCheck from credsweeper.filters.value_jfrog_token_check import ValueJfrogTokenCheck from credsweeper.filters.value_json_web_token_check import ValueJsonWebTokenCheck from credsweeper.filters.value_last_word_check import ValueLastWordCheck -from credsweeper.filters.value_length_check import ValueLengthCheck from credsweeper.filters.value_method_check import ValueMethodCheck from credsweeper.filters.value_not_allowed_pattern_check import ValueNotAllowedPatternCheck from credsweeper.filters.value_not_part_encoded_check import ValueNotPartEncodedCheck from credsweeper.filters.value_number_check import ValueNumberCheck from credsweeper.filters.value_pattern_check import ValuePatternCheck -from credsweeper.filters.value_pattern_length_check import ValuePatternLengthCheck from credsweeper.filters.value_similarity_check import ValueSimilarityCheck from credsweeper.filters.value_split_keyword_check import ValueSplitKeywordCheck from credsweeper.filters.value_string_type_check import ValueStringTypeCheck diff --git a/credsweeper/filters/group/general_pattern.py b/credsweeper/filters/group/general_pattern.py index b340055fd..96018a5f4 100644 --- a/credsweeper/filters/group/general_pattern.py +++ b/credsweeper/filters/group/general_pattern.py @@ -1,5 +1,6 @@ from credsweeper.common.constants import GroupType from credsweeper.config import Config +from credsweeper.filters import ValueUselessWordCheck from credsweeper.filters.group import Group @@ -8,3 +9,4 @@ class GeneralPattern(Group): def __init__(self, config: Config) -> None: super().__init__(config, GroupType.PATTERN) + self.filters.extend([ValueUselessWordCheck()]) diff --git a/credsweeper/filters/group/group.py b/credsweeper/filters/group/group.py index b6365549b..37cea6948 100644 --- a/credsweeper/filters/group/group.py +++ b/credsweeper/filters/group/group.py @@ -3,12 +3,11 @@ from credsweeper.common.constants import GroupType from credsweeper.config import Config -from credsweeper.filters import (Filter, LineSpecificKeyCheck, SeparatorUnusualCheck, ValueAllowlistCheck, - ValueArrayDictionaryCheck, ValueBlocklistCheck, ValueCamelCaseCheck, - ValueFilePathCheck, ValueFirstWordCheck, ValueLastWordCheck, ValueLengthCheck, - ValueMethodCheck, ValueNotAllowedPatternCheck, ValuePatternCheck, ValueSimilarityCheck, - ValueStringTypeCheck, ValueTokenCheck, VariableNotAllowedPatternCheck, - ValuePatternLengthCheck, ValueHexNumberCheck) +from credsweeper.filters import (Filter, LineSpecificKeyCheck, ValueAllowlistCheck, ValueArrayDictionaryCheck, + ValueBlocklistCheck, ValueCamelCaseCheck, ValueFilePathCheck, ValueFirstWordCheck, + ValueLastWordCheck, ValueMethodCheck, ValueNotAllowedPatternCheck, ValuePatternCheck, + ValueSimilarityCheck, ValueStringTypeCheck, ValueTokenCheck, + VariableNotAllowedPatternCheck, ValueHexNumberCheck) class Group(ABC): @@ -36,7 +35,6 @@ def filters(self, filters: List[Filter]) -> None: def get_keyword_base_filters(config: Config) -> List[Filter]: """returns base filters""" filters = [ # - SeparatorUnusualCheck(), ValueAllowlistCheck(), ValueArrayDictionaryCheck(), ValueBlocklistCheck(), @@ -45,7 +43,6 @@ def get_keyword_base_filters(config: Config) -> List[Filter]: ValueFirstWordCheck(), ValueHexNumberCheck(), ValueLastWordCheck(), - ValueLengthCheck(config), ValueMethodCheck(), ValueSimilarityCheck(), ValueStringTypeCheck(config), @@ -62,5 +59,4 @@ def get_pattern_base_filters(config: Config) -> List[Filter]: return [ # LineSpecificKeyCheck(), # ValuePatternCheck(config), # - ValuePatternLengthCheck(config) ] diff --git a/credsweeper/filters/group/url_credentials_group.py b/credsweeper/filters/group/url_credentials_group.py index 9a7477191..23aba1d3b 100644 --- a/credsweeper/filters/group/url_credentials_group.py +++ b/credsweeper/filters/group/url_credentials_group.py @@ -2,8 +2,8 @@ from credsweeper.config import Config from credsweeper.filters import (ValueAllowlistCheck, ValueArrayDictionaryCheck, ValueBlocklistCheck, ValueCamelCaseCheck, ValueDictionaryValueLengthCheck, ValueFilePathCheck, - ValueFirstWordCheck, ValueLastWordCheck, ValueLengthCheck, ValueMethodCheck, - ValueNotAllowedPatternCheck, ValuePatternCheck, ValueStringTypeCheck, ValueTokenCheck) + ValueFirstWordCheck, ValueLastWordCheck, ValueMethodCheck, ValueNotAllowedPatternCheck, + ValuePatternCheck, ValueStringTypeCheck, ValueTokenCheck) from credsweeper.filters.group import Group @@ -25,11 +25,10 @@ def __init__(self, config: Config) -> None: ValueFilePathCheck(), ValueFirstWordCheck(), ValueLastWordCheck(), - ValueLengthCheck(config), ValueMethodCheck(), ValueStringTypeCheck(config), ValueNotAllowedPatternCheck(), ValueTokenCheck(), - ValueDictionaryValueLengthCheck(), + ValueDictionaryValueLengthCheck(min_len=4, max_len=80), ValuePatternCheck(config) ] diff --git a/credsweeper/filters/line_git_binary_check.py b/credsweeper/filters/line_git_binary_check.py index f5ac8ebbb..fabfd36a8 100644 --- a/credsweeper/filters/line_git_binary_check.py +++ b/credsweeper/filters/line_git_binary_check.py @@ -28,7 +28,9 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """ if line_data.line is None: return True - line = line_data.line.strip() + if 66 < target.line_strip_len: + return False + line = target.line_strip len_line = len(line) # https://github.com/git/git/blob/master/base85.c diff --git a/credsweeper/filters/line_specific_key_check.py b/credsweeper/filters/line_specific_key_check.py index 4e1fb2119..71fec9dc0 100644 --- a/credsweeper/filters/line_specific_key_check.py +++ b/credsweeper/filters/line_specific_key_check.py @@ -1,5 +1,6 @@ import re +from credsweeper.common.constants import ML_HUNK from credsweeper.config import Config from credsweeper.credentials import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget @@ -10,10 +11,8 @@ class LineSpecificKeyCheck(Filter): """Check that values from list below is not in candidate line.""" - NOT_ALLOWED = [r"example", r"enc\(", r"enc\[", r"true", r"false"] - NOT_ALLOWED_PATTERN = re.compile( # - Util.get_regex_combine_or(NOT_ALLOWED), # - flags=re.IGNORECASE) + NOT_ALLOWED = [r"example", r"\benc[\(\[]", r"\btrue\b", r"\bfalse\b"] + NOT_ALLOWED_PATTERN = re.compile(Util.get_regex_combine_or(NOT_ALLOWED), re.IGNORECASE) def __init__(self, config: Config = None) -> None: pass @@ -31,8 +30,13 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """ if line_data.line is None: return True + if 0 <= line_data.variable_start: + # variable may be defined too + sub_line_start = 0 if ML_HUNK >= line_data.variable_start else line_data.variable_start - ML_HUNK + else: + sub_line_start = 0 if ML_HUNK >= line_data.value_start else line_data.value_start - ML_HUNK - if self.NOT_ALLOWED_PATTERN.search(line_data.line): + if self.NOT_ALLOWED_PATTERN.search(line_data.line, sub_line_start, line_data.value_end + ML_HUNK): return True return False diff --git a/credsweeper/filters/separator_unusual_check.py b/credsweeper/filters/separator_unusual_check.py deleted file mode 100644 index b05da326b..000000000 --- a/credsweeper/filters/separator_unusual_check.py +++ /dev/null @@ -1,49 +0,0 @@ -import logging - -from credsweeper.config import Config -from credsweeper.credentials import LineData -from credsweeper.file_handler.analysis_target import AnalysisTarget -from credsweeper.filters import Filter - -logger = logging.getLogger(__name__) - - -class SeparatorUnusualCheck(Filter): - """Check that candidate have no double symbol ops (like ++, --, <<) or comparison ops (like != or ==) as separator. - - Example: - `pwd == 'value'` - `pwd != 'value'` - `pwd << value` - - """ - - def __init__(self, config: Config = None) -> None: - pass - - def run(self, line_data: LineData, target: AnalysisTarget) -> bool: - """Run filter checks on received credential candidate data 'line_data'. - - Args: - line_data: credential candidate data - target: multiline target from which line data was obtained - - Return: - True, if need to filter candidate and False if left - - """ - if line_data.separator is None: - return True - - if 1 > line_data.separator_start: - logger.warning(f"Wrong separator start position {line_data}") - return True - - try: - if line_data.separator == line_data.line[line_data.separator_start + 1] or \ - (line_data.separator == "=" and line_data.line[line_data.separator_start - 1] == "!"): - return True - except IndexError: - return True - - return False diff --git a/credsweeper/filters/value_allowlist_check.py b/credsweeper/filters/value_allowlist_check.py index fa3885690..34263a6e2 100644 --- a/credsweeper/filters/value_allowlist_check.py +++ b/credsweeper/filters/value_allowlist_check.py @@ -32,8 +32,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True if self.ALLOWED_PATTERN.match(line_data.value): return True diff --git a/credsweeper/filters/value_array_dictionary_check.py b/credsweeper/filters/value_array_dictionary_check.py index 12630733f..4aa9ced0c 100644 --- a/credsweeper/filters/value_array_dictionary_check.py +++ b/credsweeper/filters/value_array_dictionary_check.py @@ -30,9 +30,8 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True - + if line_data.is_well_quoted_value: + return False if self.PATTERN.search(line_data.value): return True diff --git a/credsweeper/filters/value_atlassian_token_check.py b/credsweeper/filters/value_atlassian_token_check.py index 56f2b72bb..f2239a208 100644 --- a/credsweeper/filters/value_atlassian_token_check.py +++ b/credsweeper/filters/value_atlassian_token_check.py @@ -26,16 +26,19 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value with contextlib.suppress(Exception): # atlassian integer:bytes from base64 if value.startswith("BBDC-"): # Bitbucket HTTP Access Token return ValueAtlassianTokenCheck.check_atlassian_struct(value[5:]) - elif value.startswith("ATBB"): + elif value.startswith("AT"): # Bitbucket App password + while "\\=" in value or "%3d" in value or "%3D" in value: + # = sign may be escaped in URL https://www.rfc-editor.org/rfc/rfc3986 + value = value.replace('\\', '') + value = value.replace('%3d', '=') + value = value.replace('%3D', '=') return ValueAtlassianTokenCheck.check_crc32_struct(value) else: # Jira / Confluence PAT token @@ -45,9 +48,10 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: @staticmethod def check_crc32_struct(value: str) -> bool: """Returns False if value is valid for bitbucket app password structure 'payload:crc32'""" - crc32 = int(value[28:], 16) - data = value[:28].encode(ASCII) - if crc32 == binascii.crc32(data): + crc32 = int(value[-8:], 16) + data = value[:-8].encode(ASCII) + data_crc32 = binascii.crc32(data) + if crc32 == data_crc32: return False return True diff --git a/credsweeper/filters/value_azure_token_check.py b/credsweeper/filters/value_azure_token_check.py new file mode 100644 index 000000000..d62293a54 --- /dev/null +++ b/credsweeper/filters/value_azure_token_check.py @@ -0,0 +1,52 @@ +import contextlib +import json + +from credsweeper.common.constants import Chars +from credsweeper.config import Config +from credsweeper.credentials import LineData +from credsweeper.file_handler.analysis_target import AnalysisTarget +from credsweeper.filters import Filter +from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check +from credsweeper.utils import Util + + +class ValueAzureTokenCheck(Filter): + """ + Azure tokens contains header, payload and signature + https://learn.microsoft.com/en-us/azure/active-directory-b2c/access-tokens + """ + + def __init__(self, config: Config = None) -> None: + pass + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received token which might be structured. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, when need to filter candidate and False if left + + """ + with contextlib.suppress(Exception): + parts = line_data.value.split('.') + if 3 != len(parts): + return True + hdr = Util.decode_base64(parts[0], padding_safe=True, urlsafe_detect=True) + header = json.loads(hdr) + if not ("alg" in header and "typ" in header and "kid" in header): + # must be all parts in header + return True + pld = Util.decode_base64(parts[1], padding_safe=True, urlsafe_detect=True) + payload = json.loads(pld) + if not ("iss" in payload and "exp" in payload and "iat" in payload): + # must be all parts in payload + return True + min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(parts[2])) + entropy = Util.get_shannon_entropy(parts[2], Chars.BASE64URL_CHARS.value) + # good signature has to be like random bytes + return entropy < min_entropy + + return True diff --git a/credsweeper/filters/value_base32_data_check.py b/credsweeper/filters/value_base32_data_check.py index dbe5dd900..2c4c2ef57 100644 --- a/credsweeper/filters/value_base32_data_check.py +++ b/credsweeper/filters/value_base32_data_check.py @@ -28,8 +28,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, when need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value # check whether digits and upper cases present for string_set in [string.digits, string.ascii_uppercase]: diff --git a/credsweeper/filters/value_base64_data_check.py b/credsweeper/filters/value_base64_data_check.py index bd3295222..7deb2ecad 100644 --- a/credsweeper/filters/value_base64_data_check.py +++ b/credsweeper/filters/value_base64_data_check.py @@ -27,8 +27,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, when need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value # check whether digits, lower and upper cases present for string_set in [string.digits, string.ascii_lowercase, string.ascii_uppercase]: diff --git a/credsweeper/filters/value_base64_encoded_pem_check.py b/credsweeper/filters/value_base64_encoded_pem_check.py index 0be194a35..eb0856b22 100644 --- a/credsweeper/filters/value_base64_encoded_pem_check.py +++ b/credsweeper/filters/value_base64_encoded_pem_check.py @@ -27,8 +27,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """ - if not line_data.value: - return True with contextlib.suppress(Exception): text = Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True) lines = text.decode(ASCII).splitlines() diff --git a/credsweeper/filters/value_base64_key_check.py b/credsweeper/filters/value_base64_key_check.py index d293aa145..8bd62a560 100644 --- a/credsweeper/filters/value_base64_key_check.py +++ b/credsweeper/filters/value_base64_key_check.py @@ -28,8 +28,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """ - if not line_data.value: - return True with contextlib.suppress(Exception): text = line_data.value # replace to space any escaped sequence except space from string.whitespace diff --git a/credsweeper/filters/value_base64_part_check.py b/credsweeper/filters/value_base64_part_check.py new file mode 100644 index 000000000..d41a7ed8c --- /dev/null +++ b/credsweeper/filters/value_base64_part_check.py @@ -0,0 +1,56 @@ +import contextlib +import statistics + +from credsweeper.common.constants import Chars +from credsweeper.config import Config +from credsweeper.credentials import LineData +from credsweeper.file_handler.analysis_target import AnalysisTarget +from credsweeper.filters import Filter +from credsweeper.utils import Util + + +class ValueBase64PartCheck(Filter): + """ + Check that candidate is NOT a part of base64 long line + """ + + def __init__(self, config: Config = None) -> None: + pass + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received weird base64 token which must be a random string + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, when need to filter candidate and False if left + + """ + + with contextlib.suppress(Exception): + if line_data.value_start and '/' == line_data.line[line_data.value_start - 1]: + if '-' in line_data.value or '_' in line_data.value: + # the value contains url-safe chars, so '/' is a delimiter + return False + value_entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE64STD_CHARS.value) + left_start = line_data.value_start - len(line_data.value) + if 0 > left_start: + left_start = 0 + left_entropy = Util.get_shannon_entropy(line_data.line[left_start:line_data.value_start], + Chars.BASE64STD_CHARS.value) + right_end = line_data.value_end + len(line_data.value) + if len(line_data.line) < right_end: + right_end = len(line_data.line) + right_entropy = Util.get_shannon_entropy(line_data.line[line_data.value_end:right_end], + Chars.BASE64STD_CHARS.value) + data = [value_entropy, left_entropy, right_entropy] + avg = statistics.mean(data) + stdev = statistics.stdev(data, avg) + avg_min = avg - stdev + if avg_min < left_entropy and avg_min < right_entropy: + # high entropy of bound parts looks like a part of base64 long line + return True + + return False diff --git a/credsweeper/filters/value_blocklist_check.py b/credsweeper/filters/value_blocklist_check.py index 31e35f30b..3f85f25cc 100644 --- a/credsweeper/filters/value_blocklist_check.py +++ b/credsweeper/filters/value_blocklist_check.py @@ -29,8 +29,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value.lower() for not_allowed in self.NOT_ALLOWED: diff --git a/credsweeper/filters/value_camel_case_check.py b/credsweeper/filters/value_camel_case_check.py index 0016c601f..86a0f45d2 100644 --- a/credsweeper/filters/value_camel_case_check.py +++ b/credsweeper/filters/value_camel_case_check.py @@ -27,9 +27,8 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True - + if line_data.is_well_quoted_value: + return False if self.CAMEL_CASE_PATTERN.match(line_data.value): return True diff --git a/credsweeper/filters/value_couple_keyword_check.py b/credsweeper/filters/value_couple_keyword_check.py index 3bb4fca93..513823944 100644 --- a/credsweeper/filters/value_couple_keyword_check.py +++ b/credsweeper/filters/value_couple_keyword_check.py @@ -22,8 +22,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value.lower() matches = 0 for keyword in static_keyword_checklist.morpheme_set: diff --git a/credsweeper/filters/value_dictionary_keyword_check.py b/credsweeper/filters/value_dictionary_keyword_check.py index 163e5f6b0..d43598b90 100644 --- a/credsweeper/filters/value_dictionary_keyword_check.py +++ b/credsweeper/filters/value_dictionary_keyword_check.py @@ -22,10 +22,11 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True line_data_value_lower = line_data.value.lower() - for keyword in static_keyword_checklist.keyword_set: + for keyword in static_keyword_checklist.keyword_list: if keyword in line_data_value_lower: - return True + line_data_value_lower = line_data_value_lower.replace(keyword, '\x7F' * len(keyword)) + ratio = line_data_value_lower.count('\x7F') / len(line_data_value_lower) + if 0.33 < ratio: + return True return False diff --git a/credsweeper/filters/value_dictionary_value_length_check.py b/credsweeper/filters/value_dictionary_value_length_check.py index 40249e331..8186f8229 100644 --- a/credsweeper/filters/value_dictionary_value_length_check.py +++ b/credsweeper/filters/value_dictionary_value_length_check.py @@ -7,8 +7,9 @@ class ValueDictionaryValueLengthCheck(Filter): """Check that candidate length is between 5 and 30.""" - def __init__(self, config: Config = None) -> None: - pass + def __init__(self, config: Config = None, min_len: int = 4, max_len: int = 31) -> None: + self.min_len = min_len + self.max_len = max_len def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received credential candidate data 'line_data'. @@ -21,9 +22,7 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True - if 4 <= len(line_data.value) <= 31: + if self.min_len <= len(line_data.value) <= self.max_len: return False else: return True diff --git a/credsweeper/filters/value_discord_bot_check.py b/credsweeper/filters/value_discord_bot_check.py new file mode 100644 index 000000000..7d2c711d1 --- /dev/null +++ b/credsweeper/filters/value_discord_bot_check.py @@ -0,0 +1,31 @@ +import contextlib + +from credsweeper.config import Config +from credsweeper.credentials import LineData +from credsweeper.file_handler.analysis_target import AnalysisTarget +from credsweeper.filters import Filter +from credsweeper.utils import Util + + +class ValueDiscordBotCheck(Filter): + """Discord bot Token""" + + def __init__(self, config: Config = None) -> None: + pass + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received token which might be structured. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, when need to filter candidate and False if left + + """ + with contextlib.suppress(Exception): + parts = line_data.value.split('.') + if int(Util.decode_base64(parts[0], padding_safe=True, urlsafe_detect=True)): + return False + return True diff --git a/credsweeper/filters/value_entropy_base32_check.py b/credsweeper/filters/value_entropy_base32_check.py index 0de1c8ed2..294a7e47a 100644 --- a/credsweeper/filters/value_entropy_base32_check.py +++ b/credsweeper/filters/value_entropy_base32_check.py @@ -14,6 +14,18 @@ class ValueEntropyBase32Check(Filter): def __init__(self, config: Config = None) -> None: pass + @staticmethod + def get_min_data_entropy(x: int) -> float: + """Returns average entropy for size of random data. Precalculated data is applied for speedup""" + if 16 == x: + y = 3.46 + elif 10 <= x: + # approximation does not exceed stdev + y = 0.64 * math.log2(x) + 0.9 + else: + y = 0 + return y + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received credential candidate data 'line_data'. @@ -25,20 +37,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE32_CHARS.value) min_entropy = ValueEntropyBase32Check.get_min_data_entropy(len(line_data.value)) return min_entropy > entropy or 0 == min_entropy - - @staticmethod - def get_min_data_entropy(x: int) -> float: - """Returns average entropy for size of random data. Precalculated data is applied for speedup""" - if 16 == x: - y = 3.46 - elif 10 <= x: - # approximation does not exceed stdev - y = 0.64 * math.log2(x) + 0.9 - else: - y = 0 - return y diff --git a/credsweeper/filters/value_entropy_base36_check.py b/credsweeper/filters/value_entropy_base36_check.py index 97f61f723..8ad48b85f 100644 --- a/credsweeper/filters/value_entropy_base36_check.py +++ b/credsweeper/filters/value_entropy_base36_check.py @@ -14,23 +14,6 @@ class ValueEntropyBase36Check(Filter): def __init__(self, config: Config = None) -> None: pass - def run(self, line_data: LineData, target: AnalysisTarget) -> bool: - """Run filter checks on received credential candidate data 'line_data'. - - Args: - line_data: credential candidate data - target: multiline target from which line data was obtained - - Return: - True, if need to filter candidate and False if left - - """ - if not line_data.value: - return True - entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE36_CHARS.value) - min_entropy = ValueEntropyBase36Check.get_min_data_entropy(len(line_data.value)) - return min_entropy > entropy or 0 == min_entropy - @staticmethod def get_min_data_entropy(x: int) -> float: """Returns minimal entropy for size of random data. Precalculated data is applied for speedup""" @@ -46,3 +29,18 @@ def get_min_data_entropy(x: int) -> float: else: y = 0 return y + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received credential candidate data 'line_data'. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, if need to filter candidate and False if left + + """ + entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE36_CHARS.value) + min_entropy = ValueEntropyBase36Check.get_min_data_entropy(len(line_data.value)) + return min_entropy > entropy or 0 == min_entropy diff --git a/credsweeper/filters/value_entropy_base64_check.py b/credsweeper/filters/value_entropy_base64_check.py index 6dec39fe8..f97741a0d 100644 --- a/credsweeper/filters/value_entropy_base64_check.py +++ b/credsweeper/filters/value_entropy_base64_check.py @@ -14,26 +14,6 @@ class ValueEntropyBase64Check(Filter): def __init__(self, config: Config = None) -> None: pass - def run(self, line_data: LineData, target: AnalysisTarget) -> bool: - """Run filter checks on received credential candidate data 'line_data'. - - Args: - line_data: credential candidate data - target: multiline target from which line data was obtained - - Return: - True, if need to filter candidate and False if left - - """ - if not line_data.value: - return True - if '-' in line_data.value or '_' in line_data.value: - entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE64URL_CHARS.value) - else: - entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE64STD_CHARS.value) - min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(line_data.value)) - return min_entropy > entropy or 0 == min_entropy - @staticmethod def get_min_data_entropy(x: int) -> float: """Returns minimal average entropy for size of random data. Precalculated round data is applied for speedup""" @@ -56,3 +36,21 @@ def get_min_data_entropy(x: int) -> float: else: y = 0 return y + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received credential candidate data 'line_data'. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, if need to filter candidate and False if left + + """ + if '-' in line_data.value or '_' in line_data.value: + entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE64URL_CHARS.value) + else: + entropy = Util.get_shannon_entropy(line_data.value, Chars.BASE64STD_CHARS.value) + min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(line_data.value)) + return min_entropy > entropy or 0 == min_entropy diff --git a/credsweeper/filters/value_file_path_check.py b/credsweeper/filters/value_file_path_check.py index c3a4e6446..61aa96b46 100644 --- a/credsweeper/filters/value_file_path_check.py +++ b/credsweeper/filters/value_file_path_check.py @@ -12,6 +12,9 @@ class ValueFilePathCheck(Filter): Check if a value contains either '/' or ':\' separators (but not both) and do not have any special characters ( !$@`&*()+) """ + base64_possible_set = set(Chars.BASE64_CHARS.value) | set(Chars.BASE64URL_CHARS.value) + unusual_windows_symbols_in_path = "\t\n\r !$@`&*()[]{}<>+=;,~" + unusual_linux_symbols_in_path = unusual_windows_symbols_in_path + ":\\" def __init__(self, config: Config = None) -> None: pass @@ -27,23 +30,39 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value - contains_unix_separator = '/' in value and not value.endswith('=') + contains_unix_separator = '/' in value if contains_unix_separator: + if "://" in value or value.startswith("~/") or value.startswith("./") or "../" in value or "/.." in value: + # common case for url definition or aliases + return True # base64 encoded data might look like linux path min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(value)) # get minimal entropy to compare with shannon entropy of found value # min_entropy == 0 means that the value cannot be checked with the entropy due high variance - contains_unix_separator = (0 == min_entropy - or min_entropy > Util.get_shannon_entropy(value, Chars.BASE64STD_CHARS.value)) + for i in value: + if i not in self.base64_possible_set: + # value contains wrong BASE64STD_CHARS symbols like . + break + else: + # all symbols are from base64 alphabet + entropy = Util.get_shannon_entropy(value, Chars.BASE64STD_CHARS.value) + if 0 == min_entropy or min_entropy > entropy: + contains_unix_separator = 1 < value.count('/') + else: + # high entropy means base64 encoded data + contains_unix_separator = False + # low shannon entropy points that the value maybe not a high randomized value in base64 contains_windows_separator = ':\\' in value - for i in " !$@`&*()+": - if i in value: - break - else: - if contains_unix_separator ^ contains_windows_separator: - return True + if contains_unix_separator or contains_windows_separator: + unusual_symbols_in_path = self.unusual_linux_symbols_in_path if contains_unix_separator \ + else self.unusual_windows_symbols_in_path + for i in unusual_symbols_in_path: + if i in value: + # the symbols which not passed in a path usually + break + else: + if contains_unix_separator ^ contains_windows_separator: + return True return False diff --git a/credsweeper/filters/value_first_word_check.py b/credsweeper/filters/value_first_word_check.py index 10c8d4ed8..e8403d97e 100644 --- a/credsweeper/filters/value_first_word_check.py +++ b/credsweeper/filters/value_first_word_check.py @@ -31,8 +31,8 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True + if line_data.is_well_quoted_value: + return False if self.NOT_ALLOWED_PATTERN.match(line_data.value): return True return False diff --git a/credsweeper/filters/value_github_check.py b/credsweeper/filters/value_github_check.py index 4c22e4dd9..0458b49de 100644 --- a/credsweeper/filters/value_github_check.py +++ b/credsweeper/filters/value_github_check.py @@ -28,8 +28,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """ # https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/ - if not line_data.value: - return True with contextlib.suppress(Exception): if line_data.value.startswith("gh") and '_' == line_data.value[3]: token = line_data.value[4:-6] diff --git a/credsweeper/filters/value_grafana_check.py b/credsweeper/filters/value_grafana_check.py index 3bd583555..ebc9b5474 100644 --- a/credsweeper/filters/value_grafana_check.py +++ b/credsweeper/filters/value_grafana_check.py @@ -25,8 +25,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, when need to filter candidate and False if left """ - if not line_data.value: - return True with contextlib.suppress(Exception): if line_data.value.startswith("glc_"): # Grafana Access Policy Token diff --git a/credsweeper/filters/value_grafana_service_check.py b/credsweeper/filters/value_grafana_service_check.py new file mode 100644 index 000000000..d6389fc2e --- /dev/null +++ b/credsweeper/filters/value_grafana_service_check.py @@ -0,0 +1,35 @@ +import binascii +import contextlib +import struct + +from credsweeper.common.constants import ASCII +from credsweeper.config import Config +from credsweeper.credentials import LineData +from credsweeper.file_handler.analysis_target import AnalysisTarget +from credsweeper.filters import Filter + + +class ValueGrafanaServiceCheck(Filter): + """Check that candidate have a known structure""" + + def __init__(self, config: Config = None) -> None: + pass + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received token which might be structured. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, if need to filter candidate and False if left + + """ + with contextlib.suppress(Exception): + checksum = struct.unpack(" bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value.lower() if len(value) in [10, 18] and ValueHexNumberCheck.HEX_32_64_VALUE_REGEX.match(value): return True diff --git a/credsweeper/filters/value_ip_check.py b/credsweeper/filters/value_ip_check.py deleted file mode 100644 index 746ee73ba..000000000 --- a/credsweeper/filters/value_ip_check.py +++ /dev/null @@ -1,44 +0,0 @@ -import contextlib -import ipaddress - -from credsweeper.config import Config -from credsweeper.credentials import LineData -from credsweeper.file_handler.analysis_target import AnalysisTarget -from credsweeper.filters import Filter - - -class ValueIPCheck(Filter): - """Filter out some of insensible IP""" - - FALSE_POSITIVE_MARKERS = ["version", "oid", "section", "rfc"] - - def __init__(self, config: Config = None) -> None: - pass - - def run(self, line_data: LineData, target: AnalysisTarget) -> bool: - """Run filter checks on received credential candidate data 'line_data'. - - Args: - line_data: credential candidate data - target: multiline target from which line data was obtained - - Return: - True, if need to filter candidate and False if left - - """ - if not line_data.value: - return True - - with contextlib.suppress(Exception): - ip = ipaddress.ip_address(line_data.value) - if 4 == ip.version: - # use line_strip_lower due the property should be cached already - line_strip_lower = target.line_strip_lower - for i in ValueIPCheck.FALSE_POSITIVE_MARKERS: - if i in line_strip_lower: - return True - if ip.is_loopback or ip.is_private or ip.is_reserved or ip.is_link_local or ip.is_multicast: - return True - return False - - return True diff --git a/credsweeper/filters/value_jfrog_token_check.py b/credsweeper/filters/value_jfrog_token_check.py index 5e36aa3ca..34a66d9b1 100644 --- a/credsweeper/filters/value_jfrog_token_check.py +++ b/credsweeper/filters/value_jfrog_token_check.py @@ -30,8 +30,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """ value = line_data.value - if not value: - return True with contextlib.suppress(Exception): if value.startswith("cmVmdGtuO"): decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True) diff --git a/credsweeper/filters/value_json_web_token_check.py b/credsweeper/filters/value_json_web_token_check.py index a53b05cf8..ed6a2e2e1 100644 --- a/credsweeper/filters/value_json_web_token_check.py +++ b/credsweeper/filters/value_json_web_token_check.py @@ -11,9 +11,19 @@ class ValueJsonWebTokenCheck(Filter): """ Check that candidate is JWT which starts usually from 'eyJ' - only header is parsed with "typ" or "alg" member from example of RFC7519 - https://datatracker.ietf.org/doc/html/rfc7519 + registered keys are checked to be in the JWT parts + https://www.iana.org/assignments/jose/jose.xhtml """ + header_keys = { + "alg", "jku", "jwk", "kid", "x5u", "x5c", "x5t", "x5t#S256", "typ", "cty", "crit", "alg", "enc", "zip", "jku", + "jwk", "kid", "x5u", "x5c", "x5t", "x5t#S256", "typ", "cty", "crit", "epk", "apu", "apv", "iv", "tag", "p2s", + "p2c", "iss", "sub", "aud", "b64", "ppt", "url", "nonce", "svt" + } + payload_keys = { + "iss", "sub", "aud", "exp", "nbf", "iat", "jti", "kty", "use", "key_ops", "alg", "enc", "zip", "jku", "jwk", + "kid", "x5u", "x5c", "x5t", "x5t#S256", "crv", "x", "y", "d", "n", "e", "d", "p", "q", "dp", "dq", "qi", "oth", + "k", "crv", "d", "x", "ext", "crit", "keys", "id", "role", "token", "secret", "password", "nonce" + } def __init__(self, config: Config = None) -> None: pass @@ -29,14 +39,29 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, when need to filter candidate and False if left """ - if not line_data.value: - return True + header_check = False + payload_check = False + signature_check = False with contextlib.suppress(Exception): - delimiter_pos = line_data.value.find(".") - # jwt token. '.' must be always in given data, according regex in rule - value = line_data.value[:delimiter_pos] - decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True) - if header := json.loads(decoded): - if "alg" in header or "typ" in header: - return False - return True + jwt_parts = line_data.value.split('.') + for part in jwt_parts: + data = Util.decode_base64(part, padding_safe=True, urlsafe_detect=True) + if part.startswith("eyJ"): + # open part - just base64 encoded + json_keys = json.loads(data).keys() + # header will be checked first + if not header_check: + header_check = bool(ValueJsonWebTokenCheck.header_keys.intersection(json_keys)) + # payload follows the header + elif not payload_check: + payload_check = bool(ValueJsonWebTokenCheck.payload_keys.intersection(json_keys)) + # any other payloads are allowed + elif header_check and payload_check and not signature_check: + # signature check or skip encrypted part + signature_check = not Util.is_ascii_entropy_validate(data) + else: + break + if header_check and payload_check and signature_check: + return False + else: + return True diff --git a/credsweeper/filters/value_last_word_check.py b/credsweeper/filters/value_last_word_check.py index a3798cba8..302792a1a 100644 --- a/credsweeper/filters/value_last_word_check.py +++ b/credsweeper/filters/value_last_word_check.py @@ -25,8 +25,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True if len(line_data.value) < 16 and self.NOT_ALLOWED_COLON_PATTERN.search(line_data.value): return True return False diff --git a/credsweeper/filters/value_length_check.py b/credsweeper/filters/value_length_check.py deleted file mode 100644 index 2fac054b3..000000000 --- a/credsweeper/filters/value_length_check.py +++ /dev/null @@ -1,28 +0,0 @@ -from credsweeper.config import Config -from credsweeper.credentials import LineData -from credsweeper.file_handler.analysis_target import AnalysisTarget -from credsweeper.filters import Filter - - -class ValueLengthCheck(Filter): - """Check if potential candidate value is not too short (longer or equal to `min_len`).""" - - def __init__(self, config: Config) -> None: - self.min_len = config.min_keyword_value_length - - def run(self, line_data: LineData, target: AnalysisTarget) -> bool: - """Run filter checks on received credential candidate data 'line_data'. - - Args: - line_data: credential candidate data - target: multiline target from which line data was obtained - - Return: - True, if need to filter candidate and False if left - - """ - if not line_data.value: - return True - if len(line_data.value) < self.min_len: - return True - return False diff --git a/credsweeper/filters/value_method_check.py b/credsweeper/filters/value_method_check.py index ea17d2c01..7e34b4385 100644 --- a/credsweeper/filters/value_method_check.py +++ b/credsweeper/filters/value_method_check.py @@ -28,8 +28,8 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True + if line_data.is_well_quoted_value: + return False if "function" in line_data.value or self.PATTERN.search(line_data.value): return True return False diff --git a/credsweeper/filters/value_not_allowed_pattern_check.py b/credsweeper/filters/value_not_allowed_pattern_check.py index 825286a58..a0cc89aa1 100644 --- a/credsweeper/filters/value_not_allowed_pattern_check.py +++ b/credsweeper/filters/value_not_allowed_pattern_check.py @@ -10,7 +10,7 @@ class ValueNotAllowedPatternCheck(Filter): """Check that secret doesn't open or closes brackets or a new line.""" - NOT_ALLOWED = [r"[,<>{};\]\[]\s*", r"^\s+\\$", r"^\s*\\n\s*"] + NOT_ALLOWED = [r"[<>\[\]{}]\s+", r"\\u00(26|3c)gt;?(\s|\\+[nrt])?", r"^\s*\\", r"^\s*\\n\s*"] NOT_ALLOWED_PATTERN = re.compile( # f"{Util.get_regex_combine_or(NOT_ALLOWED)}$", # flags=re.IGNORECASE) @@ -29,8 +29,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True - if self.NOT_ALLOWED_PATTERN.search(line_data.value): + if not line_data.is_well_quoted_value and self.NOT_ALLOWED_PATTERN.search(line_data.value): return True return False diff --git a/credsweeper/filters/value_not_part_encoded_check.py b/credsweeper/filters/value_not_part_encoded_check.py index dcd1c654a..6de327a9f 100644 --- a/credsweeper/filters/value_not_part_encoded_check.py +++ b/credsweeper/filters/value_not_part_encoded_check.py @@ -18,6 +18,29 @@ class ValueNotPartEncodedCheck(Filter): def __init__(self, config: Config = None) -> None: pass + @staticmethod + def check_line_target_fit(line_data: LineData, target: AnalysisTarget) -> bool: + """Verifies whether line data fit to be a part of many lines""" + return line_data.line_num == target.line_num \ + and len(line_data.line) == target.line_len \ + and line_data.line == target.line \ + and 0 < target.line_num <= target.lines_len \ + and line_data.line == target.lines[target.line_num - 1] + + @staticmethod + def check_val(line: str, pattern: re.Pattern) -> Optional[bool]: + """Verifies whether the line looks like a pattern""" + match_obj = pattern.match(line) + if match_obj: + val = match_obj.group("val") + # not a path-like + if not val.startswith('/'): + return True + # padding sign + if '=' == val[-1]: + return True + return None + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received credential candidate data 'line_data'. @@ -29,23 +52,17 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True - if line_data.line_num == target.line_num \ - and len(line_data.line) == target.line_len \ - and line_data.line == target.line \ - and 0 < target.line_num <= target.lines_len \ - and line_data.line == target.lines[target.line_num - 1]: + if ValueNotPartEncodedCheck.check_line_target_fit(line_data, target): # suppose, there is plain lines order if 1 < target.line_num: - result = ValueNotPartEncodedCheck._check_val( - target.lines[line_data.line_num - 2], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_BEFORE) + result = ValueNotPartEncodedCheck.check_val(target.lines[line_data.line_num - 2], + ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_BEFORE) if result is not None: return result if target.lines_len > target.line_num: - result = ValueNotPartEncodedCheck._check_val(target.lines[line_data.line_num], - ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_AFTER) + result = ValueNotPartEncodedCheck.check_val(target.lines[line_data.line_num], + ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_AFTER) if result is not None: return result else: @@ -53,28 +70,15 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: for i in range(target.lines_len): if line_data.line == target.lines[i]: if 0 < i: - result = ValueNotPartEncodedCheck._check_val( + result = ValueNotPartEncodedCheck.check_val( target.lines[i - 1], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_BEFORE) if result is not None: return result i += 1 if target.lines_len > i: - result = ValueNotPartEncodedCheck._check_val( + result = ValueNotPartEncodedCheck.check_val( target.lines[i], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_AFTER) if result is not None: return result break return False - - @staticmethod - def _check_val(line: str, pattern: re.Pattern) -> Optional[bool]: - match_obj = pattern.match(line) - if match_obj: - val = match_obj.group("val") - # not a path-like - if not val.startswith('/'): - return True - # padding sign - if '=' == val[-1]: - return True - return None diff --git a/credsweeper/filters/value_number_check.py b/credsweeper/filters/value_number_check.py index 1d37dd880..c64b5ec6d 100644 --- a/credsweeper/filters/value_number_check.py +++ b/credsweeper/filters/value_number_check.py @@ -9,8 +9,8 @@ class ValueNumberCheck(Filter): """Check value if it a value in hex or decimal representation""" - HEX_VALUE_REGEX = re.compile("^(0x)?[0-9a-f]+[ul]*$") - DEC_VALUE_REGEX = re.compile("^-?[0-9]+[ul]*$") + HEX_VALUE_REGEX = re.compile("^(0x)?[0-9a-f]{1,128}[ul]{0,3}$") + DEC_VALUE_REGEX = re.compile("^-?[0-9]{1,20}[ul]{0,3}$") def __init__(self, config: Config = None) -> None: pass @@ -26,8 +26,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True value = line_data.value.lower() if 22 > len(value) and ValueNumberCheck.HEX_VALUE_REGEX.match(value): return True diff --git a/credsweeper/filters/value_pattern_check.py b/credsweeper/filters/value_pattern_check.py index df6d4d6d5..875afe785 100644 --- a/credsweeper/filters/value_pattern_check.py +++ b/credsweeper/filters/value_pattern_check.py @@ -58,9 +58,6 @@ def ascending_pattern_check(self, line_data_value: str) -> bool: True if contain and False if not """ - if not line_data_value: - return False - count = 1 for key in range(len(line_data_value) - 1): if ord(line_data_value[key + 1]) - ord(line_data_value[key]) == 1: @@ -82,9 +79,6 @@ def descending_pattern_check(self, line_data_value: str) -> bool: boolean variable. True if contain and False if not """ - if not line_data_value: - return False - count = 1 for key in range(len(line_data_value) - 1): if ord(line_data_value[key]) - ord(line_data_value[key + 1]) == 1: @@ -107,7 +101,7 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: boolean variable. True, if need to filter candidate and False if left """ - if not line_data.value or len(line_data.value) < self.pattern_len: + if len(line_data.value) < self.pattern_len: return True if self.equal_pattern_check(line_data.value): diff --git a/credsweeper/filters/value_pattern_length_check.py b/credsweeper/filters/value_pattern_length_check.py deleted file mode 100644 index dd4531bf1..000000000 --- a/credsweeper/filters/value_pattern_length_check.py +++ /dev/null @@ -1,10 +0,0 @@ -from credsweeper.config import Config -from credsweeper.filters import ValueLengthCheck - - -class ValuePatternLengthCheck(ValueLengthCheck): - """Check if potential candidate value is not too short like ValueLengthCheck but with different min_len""" - - def __init__(self, config: Config) -> None: - super().__init__(config) - self.min_len = config.min_pattern_value_length diff --git a/credsweeper/filters/value_split_keyword_check.py b/credsweeper/filters/value_split_keyword_check.py index 64fa5c8fc..95c93e89c 100644 --- a/credsweeper/filters/value_split_keyword_check.py +++ b/credsweeper/filters/value_split_keyword_check.py @@ -24,8 +24,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True words: Union[set, list] = line_data.value.lower().split() keyword_set = static_keyword_checklist.keyword_set for word in words: diff --git a/credsweeper/filters/value_string_type_check.py b/credsweeper/filters/value_string_type_check.py index 099e58fc2..eec1f12cc 100644 --- a/credsweeper/filters/value_string_type_check.py +++ b/credsweeper/filters/value_string_type_check.py @@ -34,19 +34,13 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not self.check_for_literals: + if not self.check_for_literals or line_data.url_part: return False - if not line_data.value: - return True - - if line_data.path is None: - return True - - not_quoted = not line_data.value_leftquote and not line_data.value_rightquote + not_quoted = not line_data.is_well_quoted_value not_comment = not line_data.is_comment() - if line_data.is_source_file_with_quotes() and not_comment and not_quoted: + if line_data.is_source_file_with_quotes() and not_comment and not_quoted and not line_data.is_quoted: return True return False diff --git a/credsweeper/filters/value_token_base32_check.py b/credsweeper/filters/value_token_base32_check.py index bda20d2da..e51214206 100644 --- a/credsweeper/filters/value_token_base32_check.py +++ b/credsweeper/filters/value_token_base32_check.py @@ -12,6 +12,17 @@ class ValueTokenBase32Check(Filter): def __init__(self, config: Config = None) -> None: pass + @staticmethod + def get_min_strength(x: int) -> float: + """Returns minimal strength. Precalculated data is applied for speedup""" + if 16 == x: + y = 0.7047 + elif 8 <= x <= 32: + y = ((0.000046 * x - 0.0044) * x + 0.146) * x - 0.7 + else: + y = 1 + return y + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received credential candidate data 'line_data'. @@ -23,20 +34,7 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True strength = float(PasswordStats(line_data.value).strength()) min_strength = ValueTokenBase32Check.get_min_strength(len(line_data.value)) return min_strength > strength - - @staticmethod - def get_min_strength(x: int) -> float: - """Returns minimal strength. Precalculated data is applied for speedup""" - if 16 == x: - y = 0.7047 - elif 8 <= x <= 32: - y = ((0.000046 * x - 0.0044) * x + 0.146) * x - 0.7 - else: - y = 1 - return y diff --git a/credsweeper/filters/value_token_base36_check.py b/credsweeper/filters/value_token_base36_check.py index d3017308e..b0952d20e 100644 --- a/credsweeper/filters/value_token_base36_check.py +++ b/credsweeper/filters/value_token_base36_check.py @@ -12,24 +12,6 @@ class ValueTokenBase36Check(Filter): def __init__(self, config: Config = None) -> None: pass - def run(self, line_data: LineData, target: AnalysisTarget) -> bool: - """Run filter checks on received credential candidate data 'line_data'. - - Args: - line_data: credential candidate data - target: multiline target from which line data was obtained - - Return: - True, if need to filter candidate and False if left - - """ - if not line_data.value: - return True - - strength = float(PasswordStats(line_data.value).strength()) - min_strength = ValueTokenBase36Check.get_min_strength(len(line_data.value)) - return min_strength > strength - @staticmethod def get_min_strength(x: int) -> float: """Returns minimal strength. Precalculated data is applied for speedup""" @@ -45,3 +27,19 @@ def get_min_strength(x: int) -> float: else: y = 1 return y + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received credential candidate data 'line_data'. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, if need to filter candidate and False if left + + """ + + strength = float(PasswordStats(line_data.value).strength()) + min_strength = ValueTokenBase36Check.get_min_strength(len(line_data.value)) + return min_strength > strength diff --git a/credsweeper/filters/value_token_base64_check.py b/credsweeper/filters/value_token_base64_check.py index ee2ef3599..d8072796e 100644 --- a/credsweeper/filters/value_token_base64_check.py +++ b/credsweeper/filters/value_token_base64_check.py @@ -12,24 +12,6 @@ class ValueTokenBase64Check(Filter): def __init__(self, config: Config = None) -> None: pass - def run(self, line_data: LineData, target: AnalysisTarget) -> bool: - """Run filter checks on received credential candidate data 'line_data'. - - Args: - line_data: credential candidate data - target: multiline target from which line data was obtained - - Return: - True, if need to filter candidate and False if left - - """ - if not line_data.value: - return True - - strength = float(PasswordStats(line_data.value).strength()) - min_strength = ValueTokenBase64Check.get_min_strength(len(line_data.value)) - return min_strength > strength - @staticmethod def get_min_strength(x: int) -> float: """Returns minimal strength. Precalculated rounded data is applied for speedup""" @@ -46,3 +28,19 @@ def get_min_strength(x: int) -> float: else: y = 1 return y + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received credential candidate data 'line_data'. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, if need to filter candidate and False if left + + """ + + strength = float(PasswordStats(line_data.value).strength()) + min_strength = ValueTokenBase64Check.get_min_strength(len(line_data.value)) + return min_strength > strength diff --git a/credsweeper/filters/value_token_check.py b/credsweeper/filters/value_token_check.py index caaad7803..30c67401d 100644 --- a/credsweeper/filters/value_token_check.py +++ b/credsweeper/filters/value_token_check.py @@ -33,9 +33,8 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True - + if line_data.is_well_quoted_value: + return False tokens = re.split(self.SPLIT_PATTERN, line_data.value, maxsplit=1) # If tokens have length of 1 - pattern is not present in the value and original value returned from `.split(` if len(tokens) < 2: diff --git a/credsweeper/filters/value_useless_word_check.py b/credsweeper/filters/value_useless_word_check.py index 14da8603f..6182d1e3f 100644 --- a/credsweeper/filters/value_useless_word_check.py +++ b/credsweeper/filters/value_useless_word_check.py @@ -11,10 +11,10 @@ class ValueUselessWordCheck(Filter): """Check is candidate value contains sub-rows with operators (like ->).""" NOT_ALLOWED = [ - "((\\{)?(0x)+([0-9a-f]|\\%){1}.*)", # Check is contain \{0x or 0x - "(\\-\\>.*)", # Check if contain -> - "(xxxx.*)", # Check if contain xxxxx - "(\\s).*" # Check if contain \s + "((\\{)?(0x)+([0-9a-f]|\\%){1})", # Check is contain \{0x or 0x + r"((\w+)?->)", # Check if contain -> + "(.*example)", # Check if contain `example` word + "(\\$\\w+)", # Check whether it looks like a variable e.g. $word ] NOT_ALLOWED_PATTERN = re.compile( # Util.get_regex_combine_or(NOT_ALLOWED), # @@ -34,8 +34,6 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: True, if need to filter candidate and False if left """ - if not line_data.value: - return True if self.NOT_ALLOWED_PATTERN.match(line_data.value): return True diff --git a/credsweeper/filters/variable_not_allowed_pattern_check.py b/credsweeper/filters/variable_not_allowed_pattern_check.py index aaa332077..92b54c5f8 100644 --- a/credsweeper/filters/variable_not_allowed_pattern_check.py +++ b/credsweeper/filters/variable_not_allowed_pattern_check.py @@ -4,17 +4,13 @@ from credsweeper.credentials import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import Filter -from credsweeper.utils import Util class VariableNotAllowedPatternCheck(Filter): """Check if candidate variable is a regex placeholder or ends with match character (like + or >).""" - NOT_ALLOWED = [ - r"^([<]|\{\{).*", r"(@.*)", r"[!><+*/^|)](\s)?$", r".*public", r".*pubkey", r".*_id$", r".*name$", r".*type$" - ] NOT_ALLOWED_PATTERN = re.compile( # - Util.get_regex_combine_or(NOT_ALLOWED), # + r"(^(<|\{\{).*)|(@.*)|([!><+*/^|)](\s)?$)|(.*(public|pubkey|_id$|name$|type$))", # flags=re.IGNORECASE) def __init__(self, config: Config = None) -> None: diff --git a/credsweeper/ml_model/features.py b/credsweeper/ml_model/features.py index 7f7183a39..8e003246e 100644 --- a/credsweeper/ml_model/features.py +++ b/credsweeper/ml_model/features.py @@ -1,14 +1,13 @@ """Most rules are described in 'Secrets in Source Code: Reducing False Positives Using Machine Learning'.""" - +import contextlib from abc import ABC, abstractmethod from typing import List, Any, Dict import numpy as np -from scipy.sparse import csr_matrix -from sklearn.preprocessing import LabelBinarizer -from credsweeper.common.constants import Base, Chars +from credsweeper.common.constants import Base, Chars, CHUNK_SIZE from credsweeper.credentials import Candidate +from credsweeper.utils import Util class Feature(ABC): @@ -17,14 +16,14 @@ class Feature(ABC): def __init__(self): self.__words: List[str] = [] # type: ignore - def __call__(self, candidates: List[Candidate]) -> List[bool]: + def __call__(self, candidates: List[Candidate]) -> np.ndarray: """Call base class for features. Args: candidates: list of candidates to extract features """ - return [self.extract(candidate) for candidate in candidates] + return np.array([self.extract(candidate) for candidate in candidates]) @abstractmethod def extract(self, candidate: Candidate) -> Any: @@ -102,7 +101,8 @@ def __init__(self, words: List[str]) -> None: def extract(self, candidate: Candidate) -> bool: """Returns true if any words in first line""" - return self.any_word_in_(candidate.line_data_list[0].line.lower()) + subtext = Util.subtext(candidate.line_data_list[0].line, candidate.line_data_list[0].value_start, CHUNK_SIZE) + return self.any_word_in_(subtext.lower()) class WordInPath(Feature): @@ -133,7 +133,8 @@ def __init__(self) -> None: ] def extract(self, candidate: Candidate) -> bool: - candidate_line_data_list_0_line_lower = candidate.line_data_list[0].line.lower() + subtext = Util.subtext(candidate.line_data_list[0].line, candidate.line_data_list[0].value_start, CHUNK_SIZE) + candidate_line_data_list_0_line_lower = subtext.lower() if self.any_word_in_(candidate_line_data_list_0_line_lower): return True for i in ["<", "/>"]: @@ -146,7 +147,7 @@ class PossibleComment(Feature): r"""Feature is true if candidate line starts with #,\*,/\*? (Possible comment).""" def extract(self, candidate: Candidate) -> bool: - for i in ["#", "*", "/*"]: + for i in ["#", "*", "/*", "//"]: if candidate.line_data_list[0].line.startswith(i): return True return False @@ -177,6 +178,7 @@ class RenyiEntropy(Feature): # Constant dictionary to get characters set via name CHARS: Dict[Base, Chars] = { # + Base.base32: Chars.BASE32_CHARS, # Base.base36: Chars.BASE36_CHARS, # Base.base64: Chars.BASE64_CHARS, # Base.hex: Chars.HEX_CHARS # @@ -250,6 +252,39 @@ def __init__(self, base: str, norm: bool = False) -> None: super().__init__(base, 0.0, norm) +class CharSet(Feature): + """Feature is true when all characters of the value are from a set.""" + + # Constant dictionary to get characters set via name + CHARS: Dict[Base, str] = { # + Base.base16upper: Chars.BASE16UPPER.value, # + Base.base16lower: Chars.BASE16LOWER.value, # + Base.base32: Chars.BASE32_CHARS.value, # + Base.base36: Chars.BASE36_CHARS.value, # + Base.base64std: Chars.BASE64STD_CHARS.value + '=', # + Base.base64url: Chars.BASE64URL_CHARS.value + '=', # + } + + def __init__(self, base: str) -> None: + """CharSet class initializer. + + Args: + base: base set ID + + """ + super().__init__() + self.base: Base = getattr(Base, base) + + def extract(self, candidate: Candidate) -> bool: + with contextlib.suppress(Exception): + for i in self.CHARS[self.base]: + if i not in candidate.line_data_list[0].value: + break + else: + return True + return False + + class FileExtension(Feature): """Categorical feature of file type. @@ -260,13 +295,18 @@ class FileExtension(Feature): def __init__(self, extensions: List[str]) -> None: super().__init__() - self.extensions = extensions - - def __call__(self, candidates: List[Candidate]) -> csr_matrix: - enc = LabelBinarizer() - enc.fit(self.extensions) - extensions = [candidate.line_data_list[0].file_type for candidate in candidates] - return enc.transform(extensions) + self.__dimension = len(extensions) + self.__extension_sorted_list = sorted(list(set(extensions))) + if len(self.__extension_sorted_list) != self.__dimension: + raise RuntimeError(f"Check duplicates:{extensions}") + + def __call__(self, candidates: List[Candidate]) -> np.ndarray: + extension_set = set([candidate.line_data_list[0].file_type for candidate in candidates]) + result = np.zeros(shape=[self.__dimension], dtype=np.float32) + for i, extension in enumerate(self.__extension_sorted_list): + if extension in extension_set: + result[i] = 1.0 + return np.array([result]) def extract(self, candidate: Candidate) -> Any: raise NotImplementedError @@ -282,13 +322,18 @@ class RuleName(Feature): def __init__(self, rule_names: List[str]) -> None: super().__init__() - self.rule_names = rule_names - - def __call__(self, candidates: List[Candidate]) -> csr_matrix: - enc = LabelBinarizer() - enc.fit(self.rule_names) - rule_names = [candidate.rule_name for candidate in candidates] - return enc.transform(rule_names) + self.__dimension = len(rule_names) + self.__rule_name_sorted_list = sorted(list(set(rule_names))) + if len(self.__rule_name_sorted_list) != self.__dimension: + raise RuntimeError(f"Check duplicates:{rule_names}") + + def __call__(self, candidates: List[Candidate]) -> np.ndarray: + result = np.zeros(shape=[self.__dimension], dtype=np.int8) + candidate_rule_set = set(x.rule_name for x in candidates) + for i, rule in enumerate(self.__rule_name_sorted_list): + if rule in candidate_rule_set: + result[i] = 1 + return np.array([result]) def extract(self, candidate: Candidate) -> Any: raise NotImplementedError diff --git a/credsweeper/ml_model/ml_model.onnx b/credsweeper/ml_model/ml_model.onnx index e4a5b1e68..76804356c 100644 Binary files a/credsweeper/ml_model/ml_model.onnx and b/credsweeper/ml_model/ml_model.onnx differ diff --git a/credsweeper/ml_model/ml_validator.py b/credsweeper/ml_model/ml_validator.py index e189ea443..743501f04 100644 --- a/credsweeper/ml_model/ml_validator.py +++ b/credsweeper/ml_model/ml_validator.py @@ -1,13 +1,13 @@ import logging import os import string -from typing import List, Tuple, Union, Any +from typing import List, Tuple, Union import numpy as np import onnxruntime as ort -from credsweeper.common.constants import ThresholdPreset -from credsweeper.credentials import Candidate +from credsweeper.common.constants import ThresholdPreset, ML_HUNK +from credsweeper.credentials import Candidate, CandidateKey from credsweeper.ml_model import features from credsweeper.utils import Util @@ -16,6 +16,10 @@ class MlValidator: """ML validation class""" + MAX_LEN = 2 * ML_HUNK # for whole line limit + NON_ASCII = '\xFF' + CHAR_INDEX = {char: index for index, char in enumerate('\0' + string.printable + NON_ASCII)} + NUM_CLASSES = len(CHAR_INDEX) def __init__(self, threshold: Union[float, ThresholdPreset], azure: bool = False, cuda: bool = False) -> None: """Init @@ -32,10 +36,6 @@ def __init__(self, threshold: Union[float, ThresholdPreset], azure: bool = False else: provider = "CPUExecutionProvider" self.model_session = ort.InferenceSession(model_file_path, providers=[provider]) - char_filtered = string.ascii_lowercase + string.digits + string.punctuation - - self.char_to_index = {char: index + 1 for index, char in enumerate(char_filtered)} - self.char_to_index['NON_ASCII'] = len(self.char_to_index) + 1 model_details = Util.json_load(os.path.join(dir_path, "model_config.json")) if isinstance(threshold, float): @@ -44,7 +44,7 @@ def __init__(self, threshold: Union[float, ThresholdPreset], azure: bool = False self.threshold = model_details["thresholds"][threshold.value] else: self.threshold = 0.5 - self.maxlen = int(model_details.get("max_len", 160)) + self.common_feature_list = [] self.unique_feature_list = [] logger.info("Init ML validator, model file path: %s", model_file_path) @@ -58,34 +58,58 @@ def __init__(self, threshold: Union[float, ThresholdPreset], azure: bool = False try: feature = feature_constructor(**kwargs) except TypeError: - raise TypeError( - f'Error while parsing model details. Cannot create feature "{feature_class}" with kwargs "{kwargs}"' - ) + raise TypeError(f'Error while parsing model details. Cannot create feature "{feature_class}"' + f' with kwargs "{kwargs}"') if feature_definition["type"] in ["RuleName"]: self.unique_feature_list.append(feature) else: self.common_feature_list.append(feature) - def encode(self, line, char_to_index) -> np.ndarray: - """Encodes line to array""" - num_classes = len(char_to_index) + 1 - result_array = np.zeros((self.maxlen, num_classes), dtype=np.float32) - line = line.strip().lower()[-self.maxlen:] - for i in range(self.maxlen): - if i < len(line): - c = line[i] - if c in char_to_index: - result_array[i, char_to_index[c]] = 1 - else: - result_array[i, char_to_index["NON_ASCII"]] = 1 + @staticmethod + def encode(text: str, limit: int) -> np.ndarray: + """Encodes prepared text to array""" + result_array = np.zeros(shape=(limit, MlValidator.NUM_CLASSES), dtype=np.float32) + if text is None: + return result_array + len_text = len(text) + if limit > len_text: + # fill empty part + text += '\0' * (limit - len_text) + for i, c in enumerate(text): + if c in MlValidator.CHAR_INDEX: + result_array[i, MlValidator.CHAR_INDEX[c]] = 1 else: - result_array[i, 0] = 1 + result_array[i, MlValidator.CHAR_INDEX[MlValidator.NON_ASCII]] = 1 return result_array - def _call_model(self, line_input: np.ndarray, feature_input: np.ndarray) -> Any: - line_input = line_input.astype(np.float32) - feature_input = feature_input.astype(np.float32) - return self.model_session.run(None, {"line_input": line_input, "feature_input": feature_input})[0] + @staticmethod + def encode_line(text: str, position: int): + """Encodes line with balancing for position""" + offset = len(text) - len(text.lstrip()) + pos = position - offset + stripped = text.strip() + if MlValidator.MAX_LEN < len(stripped): + stripped = Util.subtext(stripped, pos, ML_HUNK) + return MlValidator.encode(stripped, MlValidator.MAX_LEN) + + @staticmethod + def encode_value(text: str) -> np.ndarray: + """Encodes line with balancing for position""" + stripped = text.strip() + return MlValidator.encode(stripped[:ML_HUNK], ML_HUNK) + + def _call_model(self, line_input: np.ndarray, variable_input: np.ndarray, value_input: np.ndarray, + feature_input: np.ndarray) -> np.ndarray: + input_feed = { + "line_input": line_input.astype(np.float32), + "variable_input": variable_input.astype(np.float32), + "value_input": value_input.astype(np.float32), + "feature_input": feature_input.astype(np.float32), + } + result = self.model_session.run(output_names=None, input_feed=input_feed) + if result and isinstance(result[0], np.ndarray): + return result[0] + raise RuntimeError(f"Unexpected type {type(result[0])}") def extract_common_features(self, candidates: List[Candidate]) -> np.ndarray: """Extract features that are guaranteed to be the same for all candidates on the same line with same value.""" @@ -116,31 +140,48 @@ def extract_unique_features(self, candidates: List[Candidate]) -> np.ndarray: feature_array = feature_array | new_feature return feature_array - def validate(self, candidate: Candidate) -> Tuple[bool, float]: - """Validate single credential candidate.""" - sample_as_batch = [(candidate.line_data_list[0].value, [candidate])] - is_cred_batch, probability_batch = self.validate_groups(sample_as_batch, 1) - return is_cred_batch[0], probability_batch[0] - - def get_group_features(self, value: str, candidates: List[Candidate]) -> Tuple[np.ndarray, np.ndarray]: + def get_group_features(self, candidates: List[Candidate]) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """ `np.newaxis` used to add new dimension if front, so input will be treated as a batch """ - line_input = self.encode(value, self.char_to_index)[np.newaxis] - + # all candidates are from the same line + default_candidate = candidates[0] + line_input = MlValidator.encode_line(default_candidate.line_data_list[0].line, + default_candidate.line_data_list[0].value_start)[np.newaxis] + variable = "" + value = "" + for candidate in candidates: + if not variable and candidate.line_data_list[0].variable: + variable = candidate.line_data_list[0].variable + if not value and candidate.line_data_list[0].value: + value = candidate.line_data_list[0].value + if variable and value: + break + variable_input = MlValidator.encode_value(variable)[np.newaxis] + value_input = MlValidator.encode_value(value)[np.newaxis] + feature_array = self.extract_features(candidates) + return line_input, variable_input, value_input, feature_array + + def extract_features(self, candidates: List[Candidate]) -> np.ndarray: + """extracts common and unique features from list of candidates""" common_features = self.extract_common_features(candidates) unique_features = self.extract_unique_features(candidates) - feature_array = np.hstack([common_features, unique_features]) - feature_array = np.array([feature_array]) - return line_input, feature_array + feature_hstack = np.hstack([common_features, unique_features]) + feature_array = np.array([feature_hstack]) + return feature_array - def _batch_call_model(self, line_inputs, feature_array_list): + def _batch_call_model(self, line_input_list, variable_input_list, value_input_list, features_list) -> np.ndarray: """auxiliary method to invoke twice""" - line_inputs_stack = np.vstack(line_inputs) - feature_array_vstack = np.vstack(feature_array_list) - return self._call_model(line_inputs_stack, feature_array_vstack)[:, 0] - - def validate_groups(self, group_list: List[Tuple[str, List[Candidate]]], + line_inputs_vstack = np.vstack(line_input_list) + variable_inputs_vstack = np.vstack(variable_input_list) + value_inputs_vstack = np.vstack(value_input_list) + feature_array_vstack = np.vstack(features_list) + result_call = self._call_model(line_inputs_vstack, variable_inputs_vstack, value_inputs_vstack, + feature_array_vstack) + result = result_call[:, 0] + return result + + def validate_groups(self, group_list: List[Tuple[CandidateKey, List[Candidate]]], batch_size: int) -> Tuple[np.ndarray, np.ndarray]: """Use ml model on list of candidate groups. @@ -154,24 +195,34 @@ def validate_groups(self, group_list: List[Tuple[str, List[Candidate]]], """ line_input_list = [] + variable_input_list = [] + value_input_list = [] features_list = [] - probability = np.zeros(len(group_list)) + probability = np.zeros(len(group_list), dtype=np.float32) head = tail = 0 - for (value, candidates) in group_list: - line_input, feature_array = self.get_group_features(value, candidates) + for group_key, candidates in group_list: + line_input, variable_input, value_input, feature_array = self.get_group_features(candidates) line_input_list.append(line_input) + variable_input_list.append(variable_input) + value_input_list.append(value_input) features_list.append(feature_array) tail += 1 if 0 == tail % batch_size: # use the approach to reduce memory consumption for huge candidates list - probability[head:tail] = self._batch_call_model(line_input_list, features_list) + probability[head:tail] = self._batch_call_model(line_input_list, variable_input_list, value_input_list, + features_list) head = tail line_input_list.clear() + variable_input_list.clear() + value_input_list.clear() features_list.clear() if head != tail: - probability[head:tail] = self._batch_call_model(line_input_list, features_list) + probability[head:tail] = self._batch_call_model(line_input_list, variable_input_list, value_input_list, + features_list) is_cred = probability > self.threshold - for i in range(len(is_cred)): - logger.debug("ML decision: %s with prediction: %s for value: %s", is_cred[i], round(probability[i], 8), - group_list[i][0]) - return is_cred, probability + if logger.isEnabledFor(logging.DEBUG): + for i in range(len(is_cred)): + logger.debug("ML decision: %s with prediction: %s for value: %s", is_cred[i], probability[i], + group_list[i][0]) + # apply cast to float to avoid json export issue + return is_cred, probability.astype(float) diff --git a/credsweeper/ml_model/model_config.json b/credsweeper/ml_model/model_config.json index 55f092b94..d9e214688 100644 --- a/credsweeper/ml_model/model_config.json +++ b/credsweeper/ml_model/model_config.json @@ -6,7 +6,6 @@ "high": 0.79791, "highest": 0.92996 }, - "max_len": 160, "features": [ { "type": "WordInVariable", @@ -216,6 +215,12 @@ "base": "hex" } }, + { + "type": "ShannonEntropy", + "kwargs": { + "base": "base32" + } + }, { "type": "ShannonEntropy", "kwargs": { @@ -253,6 +258,13 @@ "alpha": 0.5 } }, + { + "type": "RenyiEntropy", + "kwargs": { + "base": "base32", + "alpha": 0.5 + } + }, { "type": "RenyiEntropy", "kwargs": { @@ -274,6 +286,13 @@ "alpha": 2.0 } }, + { + "type": "RenyiEntropy", + "kwargs": { + "base": "base32", + "alpha": 2.0 + } + }, { "type": "RenyiEntropy", "kwargs": { @@ -288,6 +307,42 @@ "alpha": 2.0 } }, + { + "type": "CharSet", + "kwargs": { + "base": "base16upper" + } + }, + { + "type": "CharSet", + "kwargs": { + "base": "base16lower" + } + }, + { + "type": "CharSet", + "kwargs": { + "base": "base32" + } + }, + { + "type": "CharSet", + "kwargs": { + "base": "base36" + } + }, + { + "type": "CharSet", + "kwargs": { + "base": "base64std" + } + }, + { + "type": "CharSet", + "kwargs": { + "base": "base64url" + } + }, { "type": "HasHtmlTag" }, @@ -302,88 +357,152 @@ "kwargs": { "extensions": [ "", + ".1", ".adoc", ".asciidoc", + ".axaml", ".bash", ".bat", ".bats", + ".bazel", + ".bundle", + ".bzl", ".c", ".cc", - ".cfg", + ".cf", + ".cjs", + ".cljc", + ".cmd", ".cnf", + ".coffee", ".conf", ".config", ".cpp", + ".creds", + ".crt", ".cs", - ".diff", + ".csp", + ".csv", + ".dist", + ".doc", + ".dockerfile", + ".eex", ".env", + ".erb", + ".erl", ".ex", ".example", - ".ex", - ".tf", ".exs", ".ext", + ".g4", + ".gml", + ".gni", ".go", ".golden", ".gradle", ".groovy", ".h", - ".hpp", + ".haml", ".hs", ".html", + ".idl", + ".iml", ".in", - ".inc", ".ini", + ".j", ".j2", ".java", + ".jenkinsfile", ".js", ".json", ".jsp", + ".jsx", + ".jwt", ".kt", + ".las", + ".ldif", + ".ldml", + ".libsonnet", + ".lkml", + ".lock", + ".log", ".lua", ".m", - ".markdown", + ".map", ".markerb", ".md", + ".mdx", + ".mjs", + ".mk", + ".ml", + ".mlir", + ".moo", ".ndjson", + ".nix", + ".nolint", + ".odd", + ".pan", + ".patch", ".php", ".pl", + ".pm", + ".po", ".pod", ".postinst", ".pp", + ".ppk", ".properties", ".proto", ".ps1", + ".purs", ".pxd", ".py", + ".pyi", + ".pyx", ".r", ".rb", + ".re", + ".red", + ".rexx", ".rnh", + ".rrc", ".rs", ".rsp", ".rst", ".sample", ".sbt", ".scala", - ".scss", + ".secrets", ".sh", - ".slim", ".snap", ".sql", + ".storyboard", + ".strings", + ".swift", ".t", + ".td", + ".tdf", ".template", + ".test", ".tf", ".tfstate", + ".tfvars", ".tl", ".tmpl", + ".token", ".toml", ".travis", ".ts", ".tsx", ".txt", ".vue", + ".xaml", + ".xib", + ".xml", ".yaml", - ".yml" + ".yml", + ".zsh", + ".zsh-theme" ] } }, @@ -391,21 +510,21 @@ "type": "RuleName", "kwargs": { "rule_names": [ - "Token", - "Secret", - "Github Old Token", "API", - "Credential", - "Password", - "Key", "Auth", + "Certificate", + "Credential", + "Github Old Token", "JSON Web Token", - "URL Credentials", + "Key", "Nonce", + "Password", "Salt", - "Certificate" + "Secret", + "Token", + "URL Credentials" ] } } ] -} +} \ No newline at end of file diff --git a/credsweeper/rules/config.yaml b/credsweeper/rules/config.yaml index d2ebc89c3..29c266f8e 100644 --- a/credsweeper/rules/config.yaml +++ b/credsweeper/rules/config.yaml @@ -56,7 +56,7 @@ confidence: moderate type: pattern values: - - (^|\s|(?P(?i:\bip[\s/]+id[\s/]+pw[\s/:]*))|(?P://))(?P[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2})((\s*\()?|(?(variable)[\s,/]+|(?(url)[,]|[,/])))\s*\w[\w.-]{3,80}[\s,/]+(?P(?(url)(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9_+=~!@#$%^&*;?-])){7,31}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)|(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;?-])){7,31}(?(e)(?(f)(?(g)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)))(?:\s|[^/]|$) + - (^|\s|(?P(?i:\bip[\s/]{1,80}id[\s/]{1,80}pw[\s/:]{0,80}))|(?P://))(?P[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2})((\s*\()?|(?(variable)[\s,/]{1,80}|(?(url)[,]|[,/])))\s*\w[\w.-]{3,80}[\s,/]{1,80}(?P(?(url)(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9_+=~!@#$%^&*;?-])){7,31}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)|(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;?-])){7,31}(?(e)(?(f)(?(g)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)))(?:\s|[^/]|$) filter_type: - ValueAllowlistCheck - ValuePatternCheck @@ -72,7 +72,7 @@ confidence: moderate type: pattern values: - - (?P--)?(?P\w*(?i:pa[as]swords?|passwd?|pwd|\bp/w|\bpw|비밀번호|비번|패스워드|암호))\s*?(?(ddash)[ =]|[:=/>-]{1,2})\s*(?P[`'\"]+)?(?P(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){4,31}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)(?P=quote)|(\s|$)) + - (?P--)?(?P\w*(?i:pa[as]swords?|passwd?|pwd|\bp/w|\bpw|비밀번호|비번|패스워드|암호))\s*?(?(ddash)[ =]|[:=/>-]{1,2})\s*(?P[`'\"]{1,8})?(?P(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){4,31}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)(?P=quote)|(\s|$)) - (?P--)?(?P(?i:user\s*)?(?i:id|login|account|root|admin|user|name|wifi|role|host|default|계정|아이디))\s*?(?(ddash)[ =]|[ :=])\s*?(?P\S+) filter_type: - ValueAllowlistCheck @@ -95,7 +95,7 @@ confidence: moderate type: pattern values: - - (?P[\w.-]*(?i:(?P\bid\b)|id\b|user|name|계정|아이디)[\w.-]*(?(id)[ :(/]+|[:(/]+)(?i:pa[as]swo?r?ds?|pwd?|비밀번호|비번|패스워드|암호))\)?(\s*->\s*|[ =:)(/]+|\s+is\s+|\s+are\s+|\s*는\s*|\s*은\s*|\s*설정은\s*)\(?(?P[\w.-]{2,31})[ :\(/\"',]+(?P(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){4,31}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)) + - (?P[\w.-]{0,80}(?i:(?P\bid\b)|id\b|user|name|계정|아이디)[\w.-]{0,80}(?(id)[ :(/]{1,80}|[:(/]{1,80})(?i:pa[as]swo?r?ds?|pwd?|비밀번호|비번|패스워드|암호))\)?(\s*->\s*|[ =:)(/]{1,80}|\s+is\s+|\s+are\s+|\s*는\s*|\s*은\s*|\s*설정은\s*)\(?(?P[\w.-]{2,31})[ :\(/\"',]{1,80}(?P(?-i:(?P[A-Z])|(?P[a-z])|(?P[0-9/_+=~!@#$%^&*;:?-])){4,31}(?(a)(?(b)(?(c)(\S|$)|(?!x)x)|(?!x)x)|(?!x)x)) filter_type: - ValueAllowlistCheck - ValuePatternCheck @@ -126,33 +126,22 @@ target: - code -- name: IPv4 - severity: info - confidence: weak - type: pattern - values: - - (?[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2}\.[0-2]?[0-9]{1,2})(?![.0-9a-zA-Z$]) - filter_type: - - ValueIPCheck - min_line_len: 10 - required_substrings: - - "." - target: - - code - -- name: IPv6 +- name: UUID severity: info confidence: strong type: pattern values: - - (?[0-9A-Fa-f]{0,4}:(:?[0-9A-Fa-f]{1,4}:?){0,6}:[0-9A-Fa-f]{1,4})(?![:0-9a-zA-Z]) - filter_type: - - ValueIPCheck - min_line_len: 10 + - (?[0-9A-Fa-f]{8}(-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12})(?![=0-9A-Za-z_+-]) + min_line_len: 36 required_substrings: - - ":" + - "-" + required_regex: "[0-9A-Za-z_/+-]{15}" + filter_type: + - ValuePatternCheck + use_ml: false target: - code + - doc - name: AWS Client ID severity: high @@ -164,7 +153,7 @@ required_substrings: - A min_line_len: 20 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -180,7 +169,7 @@ required_substrings: - A min_line_len: 20 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -218,7 +207,7 @@ confidence: moderate type: pattern values: - - (?dt0[a-zA-Z]{1}[0-9]{2}\.[A-Z0-9]{24}\.[A-Z0-9]{64})(?![=0-9A-Za-z_+-]) + - (?dt0[A-Za-z]{1}[0-9]{2}\.[0-9A-Z]{24}\.[0-9A-Z]{64})(?![=0-9A-Za-z_+-]) filter_type: GeneralPattern required_substrings: - dt0 @@ -232,11 +221,28 @@ confidence: moderate type: pattern values: - - (?EAAC[0-9A-Za-z]{27,80}) + - (?EAA[0-9A-Za-z]{80,800}) + filter_type: + - ValuePatternCheck + - ValueBase64PartCheck + required_substrings: + - EAA + min_line_len: 80 + target: + - code + - doc + +- name: Facebook App Token + severity: high + confidence: moderate + type: pattern + values: + - (?[0-9]{12,18}\|[0-9A-Za-z_-]{24,28})(?![=0-9A-Za-z_+-]) filter_type: GeneralPattern required_substrings: - - EAAC - min_line_len: 31 + - "|" + required_regex: "[0-9A-Za-z_/+-]{15}" + min_line_len: 33 target: - code - doc @@ -246,7 +252,7 @@ confidence: moderate type: pattern values: - - (?i)((git)[\w\-]*(token|key|api)[\w\-]*(\s)*(=|:|:=)(\s)*(["']?)(?P[a-z|\d]{40})(["']?)) + - (?i)((git)[0-9A-Za-z_-]{0,80}(token|key|api)[0-9A-Za-z_-]{0,80}(\s)*(=|:|:=)(\s)*(["']?)(?P[0-9a-z]{40})(["']?)) filter_type: GeneralPattern use_ml: true validations: @@ -338,7 +344,7 @@ confidence: strong type: pattern values: - - (?IGQVJ[\w]{100,8000}) + - (?IGQVJ[0-9A-Za-z_=-]{100,8000}) filter_type: GeneralPattern required_substrings: - IGQVJ @@ -349,24 +355,25 @@ - name: JSON Web Token severity: medium - confidence: moderate + confidence: strong type: pattern values: - - (?eyJ[0-9A-Za-z_=-]{15,8000}([.0-9A-Za-z_=-]{1,8000})?) - filter_type: GeneralPattern - use_ml: true + - (?eyJ[0-9A-Za-z_+/=-]{15,8000}(\.[0-9A-Za-z_+/=-]{0,8000}){2,16}) + filter_type: + - ValueJsonWebTokenCheck required_substrings: - eyJ min_line_len: 18 target: - code + - doc - name: MailChimp API Key severity: high confidence: moderate type: pattern values: - - (?[0-9a-zA-Z]{32}-us[0-9]{1,2})(?![=0-9A-Za-z_+-]) + - (?[0-9A-Za-z_-]{32}-us[0-9]{1,2})(?![=0-9A-Za-z_+-]) filter_type: GeneralPattern validations: - MailChimpKeyValidation @@ -382,7 +389,7 @@ confidence: moderate type: pattern values: - - (?key-[0-9a-zA-Z]{32})(?![=0-9A-Za-z_+-]) + - (?key-[0-9A-Za-z_-]{32})(?![=0-9A-Za-z_+-]) filter_type: GeneralPattern required_substrings: - key- @@ -425,7 +432,7 @@ confidence: strong type: pem_key values: - - (?P-----BEGIN\s(?!ENCRYPTED)[^-]*PRIVATE[^-]*KEY[^-]{0,40}-----(.+-----END[^-]+KEY[^-]{0,40}-----)?) + - (?P-----BEGIN\s(?!ENCRYPTED)[^-]{0,80}PRIVATE[^-]{0,80}KEY[^-]{0,40}-----(.+-----END[^-]{1,80}KEY[^-]{0,40}-----)?) min_line_len: 27 target: - code @@ -436,7 +443,7 @@ confidence: strong type: pattern values: - - (?P[0-9A-Za-z_/+-]*LS0t(LS1CRUdJTiB|LUJFR0lOI|QkVHSU4g)[0-9A-Za-z_/+-]{0,11}(UFJJVkFURSBLRVkt|QUklWQVRFIEtFWS0t|FBSSVZBVEUgS0VZ)[0-9A-Za-z_/+-]+LS0t[0-9A-Za-z_/+-]+) + - (?P[0-9A-Za-z_/+-]{0,8000}LS0t(LS1CRUdJTiB|LUJFR0lOI|QkVHSU4g)[0-9A-Za-z_/+-]{0,11}(UFJJVkFURSBLRVkt|QUklWQVRFIEtFWS0t|FBSSVZBVEUgS0VZ)[0-9A-Za-z_/+-]{1,8000}LS0t[0-9A-Za-z_/+-]{1,8000}) filter_type: - ValueBase64EncodedPem min_line_len: 300 @@ -496,7 +503,7 @@ confidence: moderate type: pattern values: - - (?PSG\.[\w_]{16,32}\.[\w_]{16,64}) + - (?PSG\.[0-9A-Za-z_-]{16,32}\.[0-9A-Za-z_-]{16,64}) filter_type: GeneralPattern required_substrings: - SG. @@ -510,7 +517,7 @@ confidence: strong type: pattern values: - - (?Pshp(at|ca|pa|ss)_[a-fA-F0-9]{32})(?![=0-9A-Za-z_+-]) + - (?Pshp(at|ca|pa|ss)_[0-9A-Fa-f]{32})(?![=0-9A-Za-z_+-]) filter_type: TokenPattern required_substrings: - shp @@ -524,7 +531,7 @@ confidence: strong type: pattern values: - - (?xox[aboprst]\-[-a-zA-Z0-9]{10,250}) + - (?xox[aboprst]\-[0-9A-Za-z-]{10,250}) filter_type: GeneralPattern validations: - SlackTokenValidation @@ -554,7 +561,7 @@ confidence: strong type: pattern values: - - (?Psk_live_[0-9a-zA-Z]{24})(?![=0-9A-Za-z_+-]) + - (?Psk_live_[0-9A-Za-z_-]{24})(?![=0-9A-Za-z_+-]) filter_type: GeneralPattern validations: - StripeApiKeyValidation @@ -570,7 +577,7 @@ confidence: strong type: pattern values: - - (?Prk_live_[0-9a-zA-Z]{24})(?![=0-9A-Za-z_+-]) + - (?Prk_live_[0-9A-Za-z_-]{24})(?![=0-9A-Za-z_+-]) filter_type: GeneralPattern required_substrings: - rk_live_ @@ -644,7 +651,7 @@ confidence: moderate type: pattern values: - - (?SK[0-9a-fA-F]{32})(?![=0-9A-Za-z_+-]) + - (?SK[0-9A-Fa-f]{32})(?![=0-9A-Za-z_+-]) filter_type: GeneralPattern required_substrings: - SK @@ -658,7 +665,7 @@ confidence: moderate type: pattern values: - - (?P["'])?\w{2,80}://[\w%.:-]*(?P:)(?P[^\s/\@:]{3,80})@[\w.-]+\\*(?P["'])? + - (?P[\"'])?(?P[+0-9A-Za-z-]{2,80}://)([^\s\'"<>\[\]^~`{|}:/]{0,80}:){1,3}(?P[^\s\'"<>\[\]^~`{|}@:/]{3,80})@[^\s\'"<>\[\]^~`{|}@:/]{1,800}\\{0,8}(?P[\"'])? filter_type: UrlCredentialsGroup use_ml: true required_substrings: @@ -714,7 +721,7 @@ confidence: strong type: pattern values: - - (?Ppypi-[\w_\-]{150,8000}) + - (?Ppypi-[0-9A-Za-z_-]{150,8000}) filter_type: GeneralPattern required_substrings: - pypi- @@ -728,7 +735,7 @@ confidence: strong type: pattern values: - - (?gh[pousr]_[0-9A-Za-z_]{36,255}) + - (?gh[pousr]_[0-9A-Za-z_-]{36,255}) filter_type: - ValueGitHubCheck validations: @@ -765,7 +772,7 @@ confidence: moderate type: pattern values: - - (?[a-z0-9.-]+\.firebaseio\.com|[a-z0-9.-]+\.firebaseapp\.com) + - (?[a-z0-9.-]{1,80}\.firebaseio\.com|[a-z0-9.-]{1,80}\.firebaseapp\.com) filter_type: GeneralPattern required_substrings: - .firebase @@ -852,9 +859,9 @@ confidence: strong type: pattern values: - - (?eyJ[A-Za-z0-9_=-]{50,500}\.eyJ[A-Za-z0-9_=-]+\.[A-Za-z0-9_=-]+) + - (?eyJ[A-Za-z0-9_=-]{50,500}\.eyJ[A-Za-z0-9_=-]{8,8000}\.[A-Za-z0-9_=-]{18,800}) filter_type: - - ValueJsonWebTokenCheck + - ValueAzureTokenCheck required_substrings: - eyJ min_line_len: 148 @@ -896,9 +903,10 @@ confidence: strong type: pattern values: - - (?ATCTT3xFfGN0[a-zA-Z0-9-_]{171}=[A-F0-9]{8})(?![=0-9A-Za-z_+-]) - filter_type: TokenPattern - min_line_len: 183 + - (?ATCTT3xFfGN0[a-zA-Z0-9_-]{80,800}(\\?=|%3[dD])[A-F0-9]{8})(?![=0-9A-Za-z_+-]) + filter_type: + - ValueAtlassianTokenCheck + min_line_len: 160 required_substrings: - ATCTT3xFfGN0 target: @@ -910,7 +918,7 @@ confidence: strong type: pattern values: - - (?BBDC-[NMO][ADgjQTwz][A-Za-z0-9+/]{42})(?![=0-9A-Za-z_+-]) + - (?BBDC-[NMO][ADgjQTwz][A-Za-z0-9_-]{42})(?![=0-9A-Za-z_+-]) filter_type: - ValueAtlassianTokenCheck min_line_len: 49 @@ -928,7 +936,7 @@ - (?[a-zA-Z0-9]{18}([a-zA-Z0-9]{14})?)(?![0-9A-Za-z.$_/+-]) filter_type: WeirdBase64Token min_line_len: 18 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -941,7 +949,7 @@ - (?([a-zA-Z0-9_-]{32}){1,2})(?![0-9A-Za-z.$_/+-]) filter_type: WeirdBase64Token min_line_len: 32 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -951,7 +959,7 @@ confidence: strong type: pattern values: - - (?[NMO][ADgjQTwz][a-zA-Z0-9+/]{42})(?![=0-9A-Za-z_+-]) + - (?[NMO][ADgjQTwz][a-zA-Z0-9_-]{42})(?![=0-9A-Za-z_+-]) filter_type: - ValueAtlassianTokenCheck min_line_len: 44 @@ -959,7 +967,7 @@ - M - N - O - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -972,7 +980,7 @@ - (?[a-zA-Z0-9]{24})(?![=0-9A-Za-z.$_/+-]) filter_type: WeirdBase64Token min_line_len: 24 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -982,9 +990,10 @@ confidence: strong type: pattern values: - - (?ATATT3xFfGF0[a-zA-Z0-9-_]{171}=[A-F0-9]{8})(?![=0-9A-Za-z_+-]) - filter_type: TokenPattern - min_line_len: 191 + - (?ATATT3xFfGF0[a-zA-Z0-9_-]{80,800}(\\?=|%3[dD])[A-F0-9]{8})(?![=0-9A-Za-z_+-]) + filter_type: + - ValueAtlassianTokenCheck + min_line_len: 160 required_substrings: - ATATT3xFfGF0 target: @@ -1095,7 +1104,7 @@ confidence: strong type: pattern values: - - (?eyJ[a-zA-Z0-9=/-]{64,360})(?![=0-9A-Za-z_+-]) + - (?eyJ[=a-zA-Z0-9_-]{64,360})(?![=0-9A-Za-z_+-]) filter_type: - ValueGrafanaCheck min_line_len: 67 @@ -1110,7 +1119,7 @@ confidence: strong type: pattern values: - - (?glc_eyJ[a-zA-Z0-9=/-]{80,360})(?![=0-9A-Za-z_+-]) + - (?glc_eyJ[0-9A-Za-z_-]{80,360})(?![=0-9A-Za-z_+-]) filter_type: - ValueGrafanaCheck min_line_len: 87 @@ -1142,7 +1151,7 @@ - (?[a-z0-9]{15})(?![=0-9A-Za-z_/+-]) filter_type: WeirdBase36Token min_line_len: 15 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -1155,7 +1164,7 @@ - (?[a-z0-9]{24,25})(?![=0-9A-Za-z_/+-]) filter_type: WeirdBase36Token min_line_len: 24 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -1165,10 +1174,25 @@ confidence: weak type: pattern values: - - (?[a-zA-Z0-9_-]{20})(?![=0-9A-Za-z_/+-]) + - (?[0-9A-Za-z_-]{20})(?![=0-9A-Za-z_/+-]) filter_type: WeirdBase64Token min_line_len: 20 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" + target: + - code + - doc + +- name: Hashicorp Terraform Token + severity: high + confidence: strong + type: pattern + values: + - (?[0-9A-Za-z_-]{14}\.atlasv1\.[0-9A-Za-z_-]{67})(?![=0-9A-Za-z_/+-]) + filter_type: + - ValuePatternCheck + min_line_len: 90 + required_substring: + - .atlasv1. target: - code - doc @@ -1186,7 +1210,7 @@ - ValueBase32DataCheck - ValueTokenBase32Check min_line_len: 16 - required_regex: "[a-zA-Z0-9_/+-]{15,80}" + required_regex: "[0-9A-Za-z_/+-]{15}" target: - code - doc @@ -1196,9 +1220,15 @@ confidence: strong type: pattern values: - - (?sk-\w{20}T3BlbkFJ\w{20})(?![=0-9A-Za-z_/+-]) + - (?sk-[0-9A-Za-z_-]{16,32}(T3BlbkFJ|9wZW5BS|PcGVuQU)[0-9A-Za-z_-]{16,32})(?![=0-9A-Za-z_/+-]) min_line_len: 51 - required_regex: T3BlbkFJ + filter_type: + - ValuePatternCheck + - ValueEntropyBase64Check + required_substrings: + - T3BlbkFJ + - 9wZW5BS + - PcGVuQU target: - code - doc @@ -1212,7 +1242,41 @@ min_line_len: 85 filter_type: - ValueCoupleKeywordCheck - required_regex: SWMTKN-1- + required_substrings: + - SWMTKN-1- + target: + - code + - doc + +- name: Discord Bot Token + severity: high + confidence: strong + type: pattern + values: + - (?[NMO][ADgjQTwz][a-zA-Z0-9_-]{22,26}\.[a-zA-Z0-9_-]{6}\.[a-zA-Z0-9_-]{30,40})(?![0-9A-Za-z_/+-]) + min_line_len: 62 + filter_type: + - ValueDiscordBotCheck + required_substrings: + - M + - N + - O + required_regex: "[0-9A-Za-z_/+-]{15}" + target: + - code + - doc + +- name: Grafana Service Account Token + severity: high + confidence: strong + type: pattern + values: + - (?glsa_[0-9A-Za-z_-]{32}_[0-9A-Fa-f]{8})(?![=0-9A-Za-z_+-]) + min_line_len: 46 + filter_type: + - ValueGrafanaServiceCheck + required_substrings: + - glsa_ target: - code - doc diff --git a/credsweeper/scanner/scan_type/multi_pattern.py b/credsweeper/scanner/scan_type/multi_pattern.py index 8969a63db..f9e09d46e 100644 --- a/credsweeper/scanner/scan_type/multi_pattern.py +++ b/credsweeper/scanner/scan_type/multi_pattern.py @@ -1,6 +1,6 @@ from typing import List -from credsweeper.common.constants import MAX_LINE_LENGTH, RuleType +from credsweeper.common.constants import RuleType from credsweeper.config import Config from credsweeper.credentials import Candidate from credsweeper.file_handler.analysis_target import AnalysisTarget @@ -80,9 +80,6 @@ def _scan(cls, config: Config, candidate: Candidate, candi_line_pos: int, target """ new_target = AnalysisTarget(candi_line_pos, target.lines, target.line_nums, target.descriptor) - if MAX_LINE_LENGTH < new_target.line_len: - return False - line_data_list = cls.get_line_data_list(config=config, target=new_target, pattern=rule.patterns[1], diff --git a/credsweeper/scanner/scan_type/scan_type.py b/credsweeper/scanner/scan_type/scan_type.py index 4c7b34c79..ffcec526c 100644 --- a/credsweeper/scanner/scan_type/scan_type.py +++ b/credsweeper/scanner/scan_type/scan_type.py @@ -7,6 +7,7 @@ from credsweeper.config import Config from credsweeper.credentials import Candidate, LineData from credsweeper.file_handler.analysis_target import AnalysisTarget +from credsweeper.file_handler.data_content_provider import MIN_DATA_LEN from credsweeper.filters import Filter from credsweeper.rules import Rule @@ -54,6 +55,10 @@ def filtering(cls, config: Config, target: AnalysisTarget, line_data: LineData, If `use_filters` option is false, always return False """ + if not line_data.value: + logger.debug("Filtered line with empty value in file: %s:%d in line: %s value: '%s'", line_data.path, + line_data.line_num, line_data.line, line_data.value) + return True for filter_ in filters: if filter_.run(line_data, target): logger.debug("Filtered line with filter: %s in file: %s:%d in line: %s value: %s", @@ -82,22 +87,63 @@ def get_line_data_list( """ line_data_list: List[LineData] = [] - # starting positions for continuously searching for overlapping pattern - offsets = {0} + # start - end positions for continuously searching for overlapping pattern + offsets = [(0, target.line_len)] + while offsets: - offset = offsets.pop() - for _match in pattern.finditer(target.line, offset): + offset_start, offset_end = offsets.pop() + bypass_start = bypass_end = None + for _match in pattern.finditer(target.line, pos=offset_start, endpos=offset_end): + logger.debug("Valid line for pattern: %s in file: %s:%d in line: %s", pattern.pattern, target.file_path, target.line_num, target.line) line_data = LineData(config, target.line, target.line_pos, target.line_num, target.file_path, target.file_type, target.info, pattern, _match) + if bypass_start and bypass_end: + if 0 < line_data.variable_start: + bypass_end = line_data.variable_start + elif 0 < line_data.value_start: + bypass_end = line_data.value_start + if bypass_start < bypass_end and bypass_end - bypass_start > MIN_DATA_LEN: + offsets.append((bypass_start, bypass_end)) + bypass_start = bypass_end = None + elif MIN_DATA_LEN < line_data.value_end < _match.end() \ + and MIN_DATA_LEN < _match.end() - line_data.value_end: + # add bypass for valuable sanitized value + bypass_start = line_data.value_end + bypass_end = offset_end if config.use_filters and cls.filtering(config, target, line_data, filters): - if 0 < line_data.variable_end: + if line_data.variable and 0 <= line_data.variable_start < line_data.variable_end: + # may be next matched item will be not filtered - let search it after variable + bypass_start = line_data.variable_end + bypass_end = offset_end + elif line_data.value and 0 <= line_data.value_start < line_data.value_end: # may be next matched item will be not filtered - let search it after variable - offsets.add(line_data.variable_end) + bypass_start = line_data.value_end + bypass_end = offset_end continue + + if target.offset is not None: + # the target line is a chunk of long line - offsets have to be corrected + if 0 <= line_data.variable_start: + line_data.variable_start += target.offset + if 0 <= line_data.variable_end: + line_data.variable_end += target.offset + if 0 <= line_data.separator_start: + line_data.separator_start += target.offset + if 0 <= line_data.separator_end: + line_data.separator_end += target.offset + # value positions are mandatory + line_data.value_start += target.offset + line_data.value_end += target.offset + # get the original line + line_data.line = target.lines[target.line_pos] + line_data_list.append(line_data) + if bypass_start and bypass_end: + offsets.append((bypass_start, bypass_end)) + return line_data_list @classmethod @@ -118,24 +164,23 @@ def _get_candidates(cls, config: Config, rule: Rule, target: AnalysisTarget) -> if config.exclude_lines and target.line_strip in config.exclude_lines: return candidates - line_data_list = cls.get_line_data_list(config=config, - target=target, - pattern=rule.patterns[0], - filters=rule.filters) - - for line_data in line_data_list: - if config.exclude_values and line_data.value.strip() in config.exclude_values: - continue - - candidate = Candidate([line_data], rule.patterns, rule.rule_name, rule.severity, config, rule.validations, - rule.use_ml, rule.confidence) - # single pattern with multiple values means all the patterns must matched in target - if 1 < len(rule.patterns) and rule.rule_type in (RuleType.PATTERN, RuleType.KEYWORD): - # additional check whether all patterns match - if not cls._aux_scan(config, rule, target, candidate): - # cannot find secondary values for the candidate + if line_data_list := cls.get_line_data_list(config=config, + target=target, + pattern=rule.patterns[0], + filters=rule.filters): + for line_data in line_data_list: + if config.exclude_values and line_data.value.strip() in config.exclude_values: continue - candidates.append(candidate) + + candidate = Candidate([line_data], rule.patterns, rule.rule_name, rule.severity, config, + rule.validations, rule.use_ml, rule.confidence) + # single pattern with multiple values means all the patterns must matched in target + if 1 < len(rule.patterns) and rule.rule_type in (RuleType.PATTERN, RuleType.KEYWORD): + # additional check whether all patterns match + if not cls._aux_scan(config, rule, target, candidate): + # cannot find secondary values for the candidate + continue + candidates.append(candidate) return candidates @classmethod diff --git a/credsweeper/scanner/scanner.py b/credsweeper/scanner/scanner.py index eaf61b2ed..73a0d984e 100644 --- a/credsweeper/scanner/scanner.py +++ b/credsweeper/scanner/scanner.py @@ -153,7 +153,7 @@ def scan(self, provider: ContentProvider) -> List[Candidate]: continue # use lower case for required substring - target_line_stripped_lower = target.line_strip_lower + target_line_stripped_lower = target.line_lower_strip # cached value to skip the same regex verifying matched_regex: Dict[re.Pattern, bool] = {} diff --git a/credsweeper/secret/config.json b/credsweeper/secret/config.json index 8c5a9442b..1a4b904e3 100644 --- a/credsweeper/secret/config.json +++ b/credsweeper/secret/config.json @@ -32,6 +32,7 @@ ".jar", ".jpeg", ".jpg", + ".map", ".m4a", ".mat", ".mo", @@ -47,6 +48,8 @@ ".pyc", ".pyd", ".pyo", + ".rc", + ".rc2", ".rar", ".realm", ".s7z", @@ -58,6 +61,7 @@ ".tiff", ".ttf", ".vcxproj", + ".vdproj", ".war", ".wav", ".webm", @@ -114,6 +118,11 @@ ".cu" ], "source_quote_ext": [ + ".cs", + ".cc", + ".php", + ".tf", + ".kt", ".go", ".ipynb", ".ts", @@ -147,6 +156,8 @@ "value_start", "value_end", "variable", + "variable_start", + "variable_end", "entropy_validation" ], "candidate_output": [ diff --git a/credsweeper/utils/util.py b/credsweeper/utils/util.py index 7efb5b684..80affdb29 100644 --- a/credsweeper/utils/util.py +++ b/credsweeper/utils/util.py @@ -4,6 +4,7 @@ import logging import math import os +import string import struct import tarfile from dataclasses import dataclass @@ -16,7 +17,7 @@ from typing_extensions import TypedDict from credsweeper.common.constants import DiffRowType, AVAILABLE_ENCODINGS, \ - DEFAULT_ENCODING, LATIN_1 + DEFAULT_ENCODING, LATIN_1, CHUNK_SIZE, MAX_LINE_LENGTH, CHUNK_STEP_SIZE logger = logging.getLogger(__name__) @@ -84,6 +85,8 @@ def get_shannon_entropy(data: str, iterator: str) -> float: 32: 3.25392803184602, 40: 3.64853567064867, 64: 4.57756933688035, + 384: 7.39, + 512: 7.55, } @staticmethod @@ -95,10 +98,13 @@ def get_min_data_entropy(x: int) -> float: # approximated for range 12 - 64 _x = x - 8 y = ((0.000016617804 * _x - 0.002695077) * _x + 0.170393) * _x + 0.4 - elif 64 < x: + elif 64 < x < 384: # logarithm base 2 - slow, but precise _x = x - 8 - y = 1.581026279659 * math.log2(_x) - 1.90156 + y = 1.095884 * math.log2(_x) - 1.90156 + elif 384 < x < 512: + # solved for 384 - 512 + y = -0.11215851 * math.log2(x)**2 + 2.34303484 * math.log2(x) - 4.4466237 else: # less or equal to 8 bytes might have 0 entropy y = 0 @@ -161,7 +167,14 @@ def is_binary(data: bytes) -> bool: return True if b"\0\0" in data: return True - return False + non_ascii_cnt = 0 + for i in data[:MAX_LINE_LENGTH]: + if 0x20 > i and i not in (0x09, 0x0A, 0x0D) or 0x7E < i < 0xA0: + # less than space and not tab, line feed, line end + non_ascii_cnt += 1 + chunk_len = float(MAX_LINE_LENGTH if MAX_LINE_LENGTH < len(data) else len(data)) + # experiment for 255217 binary files shown avg = 0.268264 ± 0.168767, so let choose minimal + return 0.1 < non_ascii_cnt / chunk_len @staticmethod def read_file(path: Union[str, Path], encodings: Optional[List[str]] = None) -> List[str]: @@ -649,3 +662,53 @@ def decode_base64(text: str, padding_safe: bool = False, urlsafe_detect=False) - else: decoded = base64.b64decode(value, validate=True) return decoded + + @staticmethod + def get_chunks(line_len: int) -> List[Tuple[int, int]]: + """Returns chunks positions for given line length""" + # line length is over MAX_LINE_LENGTH already + chunks = [(0, CHUNK_SIZE)] + # case for oversize line + next_offset = CHUNK_STEP_SIZE + while line_len > next_offset: + # the target is too long for single "finditer" - it will be scanned by chunks + if line_len > next_offset + MAX_LINE_LENGTH: + # the chunk is not the before last + chunks.append((next_offset, next_offset + CHUNK_SIZE)) + next_offset += CHUNK_STEP_SIZE + else: + # the tail of line is between CHUNK_SIZE and MAX_LINE_LENGTH + chunks.append((next_offset, line_len)) + break + return chunks + + @staticmethod + def subtext(text: str, pos: int, hunk_size: int) -> str: + """cut text symmetrically for given position or use remained quota to be fitted in 2x hunk_size""" + if hunk_size <= pos: + left_quota = 0 + left_pos = pos - hunk_size + else: + left_quota = hunk_size - pos + left_pos = 0 + # skip leading whitespaces in result string + for i in range(left_pos, pos): + if text[i] in string.whitespace: + left_quota += 1 + left_pos += 1 + else: + break + right_remain = len(text) - pos + if hunk_size <= right_remain: + right_quota = 0 + right_pos = pos + hunk_size + left_quota + else: + right_quota = hunk_size - right_remain + right_pos = pos + hunk_size + left_quota + if len(text) < right_pos: + right_pos = len(text) + if 0 < left_pos: + left_pos -= right_quota + if 0 > left_pos: + left_pos = 0 + return text[left_pos:right_pos].rstrip() diff --git a/docs/source/credsweeper.filters.rst b/docs/source/credsweeper.filters.rst index f2da332f5..102580f39 100644 --- a/docs/source/credsweeper.filters.rst +++ b/docs/source/credsweeper.filters.rst @@ -20,18 +20,18 @@ credsweeper.filters.filter module :undoc-members: :show-inheritance: -credsweeper.filters.line\_specific\_key\_check module ------------------------------------------------------ +credsweeper.filters.line\_git\_binary\_check module +--------------------------------------------------- -.. automodule:: credsweeper.filters.line_specific_key_check +.. automodule:: credsweeper.filters.line_git_binary_check :members: :undoc-members: :show-inheritance: -credsweeper.filters.separator\_unusual\_check module ----------------------------------------------------- +credsweeper.filters.line\_specific\_key\_check module +----------------------------------------------------- -.. automodule:: credsweeper.filters.separator_unusual_check +.. automodule:: credsweeper.filters.line_specific_key_check :members: :undoc-members: :show-inheritance: @@ -60,6 +60,14 @@ credsweeper.filters.value\_atlassian\_token\_check module :undoc-members: :show-inheritance: +credsweeper.filters.value\_azure\_token\_check module +----------------------------------------------------- + +.. automodule:: credsweeper.filters.value_azure_token_check + :members: + :undoc-members: + :show-inheritance: + credsweeper.filters.value\_base32\_data\_check module ----------------------------------------------------- @@ -92,6 +100,14 @@ credsweeper.filters.value\_base64\_key\_check module :undoc-members: :show-inheritance: +credsweeper.filters.value\_base64\_part\_check module +----------------------------------------------------- + +.. automodule:: credsweeper.filters.value_base64_part_check + :members: + :undoc-members: + :show-inheritance: + credsweeper.filters.value\_blocklist\_check module -------------------------------------------------- @@ -132,6 +148,14 @@ credsweeper.filters.value\_dictionary\_value\_length\_check module :undoc-members: :show-inheritance: +credsweeper.filters.value\_discord\_bot\_check module +----------------------------------------------------- + +.. automodule:: credsweeper.filters.value_discord_bot_check + :members: + :undoc-members: + :show-inheritance: + credsweeper.filters.value\_entropy\_base32\_check module -------------------------------------------------------- @@ -188,10 +212,18 @@ credsweeper.filters.value\_grafana\_check module :undoc-members: :show-inheritance: -credsweeper.filters.value\_ip\_check module -------------------------------------------- +credsweeper.filters.value\_grafana\_service\_check module +--------------------------------------------------------- -.. automodule:: credsweeper.filters.value_ip_check +.. automodule:: credsweeper.filters.value_grafana_service_check + :members: + :undoc-members: + :show-inheritance: + +credsweeper.filters.value\_hex\_number\_check module +---------------------------------------------------- + +.. automodule:: credsweeper.filters.value_hex_number_check :members: :undoc-members: :show-inheritance: @@ -220,14 +252,6 @@ credsweeper.filters.value\_last\_word\_check module :undoc-members: :show-inheritance: -credsweeper.filters.value\_length\_check module ------------------------------------------------ - -.. automodule:: credsweeper.filters.value_length_check - :members: - :undoc-members: - :show-inheritance: - credsweeper.filters.value\_method\_check module ----------------------------------------------- @@ -268,14 +292,6 @@ credsweeper.filters.value\_pattern\_check module :undoc-members: :show-inheritance: -credsweeper.filters.value\_pattern\_length\_check module --------------------------------------------------------- - -.. automodule:: credsweeper.filters.value_pattern_length_check - :members: - :undoc-members: - :show-inheritance: - credsweeper.filters.value\_similarity\_check module --------------------------------------------------- diff --git a/experiment/main.py b/experiment/main.py index a524800f1..747b4ae98 100644 --- a/experiment/main.py +++ b/experiment/main.py @@ -1,23 +1,25 @@ import os import pathlib import random +import subprocess +import sys from argparse import ArgumentParser from datetime import datetime from typing import List import numpy as np import tensorflow as tf -from keras import Model +from keras import Model # type: ignore from sklearn.metrics import f1_score, precision_score, recall_score, log_loss, accuracy_score from sklearn.model_selection import train_test_split from sklearn.utils import compute_class_weight +from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint -from credsweeper.app import APP_PATH -from credsweeper.utils import Util from experiment.plot import save_plot from experiment.src.data_loader import read_detected_data, read_metadata, join_label, get_y_labels from experiment.src.features import prepare_data -from experiment.src.lstm_model import get_model_string_features +from experiment.src.lstm_model import get_model +from experiment.src.model_config_preprocess import model_config_preprocess from experiment.src.prepare_data import prepare_train_data @@ -31,7 +33,7 @@ def evaluate_model(thresholds: dict, keras_model: Model, x_data: List[np.ndarray y_label: expected result """ - predictions_proba = keras_model.predict(x_data).ravel() + predictions_proba = keras_model.predict(x_data, verbose=2).ravel() for name, threshold in thresholds.items(): predictions = (predictions_proba > threshold) accuracy = accuracy_score(y_label, predictions) @@ -50,41 +52,59 @@ def evaluate_model(thresholds: dict, keras_model: Model, x_data: List[np.ndarray def main(cred_data_location: str, jobs: int) -> str: current_time = datetime.now().strftime("%Y%m%d_%H%M%S") - model_config = Util.json_load(APP_PATH / "ml_model" / "model_config.json") - thresholds = model_config["thresholds"] - assert isinstance(thresholds, dict), thresholds - print(f"Load thresholds: {thresholds}") + dir_path = pathlib.Path("results") + os.makedirs(dir_path, exist_ok=True) - prepare_train_data(_cred_data_location, jobs) print(f"Train model on data from {cred_data_location}") + prepare_train_data(_cred_data_location, jobs) # detected data means which data is passed to ML validator of credsweeper after filters with RuleName - detected_data = read_detected_data("data/result.json") + detected_data = read_detected_data("results/detected_data.json") print(f"CredSweeper detected {len(detected_data)} credentials without ML") # all markup data meta_data = read_metadata(f"{cred_data_location}/meta") print(f"Metadata markup: {len(meta_data)} items") - df_all = join_label(detected_data, meta_data) + df_all = join_label(detected_data, meta_data, cred_data_location) + # raise RuntimeError("TestDbg") # to prevent extra memory consumption - delete unnecessary objects del detected_data del meta_data + # workaround for CI step + for i in range(3): + # there are 2 times possible fails due ml config was updated + try: + thresholds = model_config_preprocess(df_all) + break + except RuntimeError as exc: + if "RESTART:" in str(exc): + continue + else: + raise + else: + raise RuntimeError("Something went wrong") + print(f"Common dataset: {len(df_all)} items") - df_all = df_all.drop_duplicates(subset=["line", "type", "ext"]) + df_all = df_all.drop_duplicates(subset=["line", "variable", "value", "type", "ext"]) print(f"Common dataset: {len(df_all)} items after drop duplicates") # random split - df_train, df_test = train_test_split(df_all, test_size=0.2, random_state=42) + lucky_number = random.randint(1, 1 << 32) + print(f"Lucky number: {lucky_number}") + df_train, df_test = train_test_split(df_all, test_size=0.15, random_state=lucky_number) len_df_train = len(df_train) print(f"Train size: {len_df_train}") len_df_test = len(df_test) print(f"Test size: {len_df_test}") - x_eval_value, x_eval_features = prepare_data(df_all) - y_eval = get_y_labels(df_all) + + print(f"Prepare full data") + x_full_line, x_full_variable, x_full_value, x_full_features = prepare_data(df_all) + y_full = get_y_labels(df_all) del df_all - x_train_value, x_train_features = prepare_data(df_train) + print(f"Prepare train data") + x_train_line, x_train_variable, x_train_value, x_train_features = prepare_data(df_train) print("x_train_value dtype ", x_train_value.dtype) # dbg print("x_train_features dtype", x_train_features.dtype) # dbg y_train = get_y_labels(df_train) @@ -93,45 +113,71 @@ def main(cred_data_location: str, jobs: int) -> str: print(f"Class-1 prop on train: {np.mean(y_train):.4f}") - class_weights = compute_class_weight(class_weight='balanced', classes=np.unique(y_train), y=y_train) - class_weight = dict(enumerate(class_weights)) + classes = np.unique(y_train) + class_weights = compute_class_weight(class_weight='balanced', classes=classes, y=y_train) + max_weight = max(class_weights) + class_weights = [weight / max_weight for weight in class_weights] + print(f"y_train size:{len(y_train)}, 0: {np.count_nonzero(y_train == 0)}, 1: {np.count_nonzero(y_train == 1)}") + class_weight = dict(zip(classes, class_weights)) print(f"class_weight: {class_weight}") # information about class weights - print(f"y_train size:{len(y_train)}, 1: {np.count_nonzero(y_train == 1)}, 0: {np.count_nonzero(y_train == 0)}") - x_test_value, x_test_features = prepare_data(df_test) + print(f"Prepare test data") + x_test_line, x_test_variable, x_test_value, x_test_features = prepare_data(df_test) y_test = get_y_labels(df_test) print(f"Class-1 prop on test: {np.mean(y_test):.4f}") - keras_model = get_model_string_features(x_train_value.shape[-1], x_train_features.shape[-1]) - batch_size = 256 - - fit_history = keras_model.fit(x=[x_train_value, x_train_features], + max_epochs = 100 + # ^^^ the line is patched in GitHub action to speed-up test train + batch_size = 2048 + early_stopping = EarlyStopping(monitor="val_loss", patience=7, mode="min", restore_best_weights=True, verbose=1) + model_checkpoint = ModelCheckpoint(filepath=str(dir_path / f"{current_time}_best_model"), + monitor="val_loss", + save_best_only=True, + mode="min", + verbose=1) + + keras_model = get_model(x_full_line.shape, x_full_variable.shape, x_full_value.shape, x_full_features.shape) + fit_history = keras_model.fit(x=[x_train_line, x_train_variable, x_train_value, x_train_features], y=y_train, batch_size=batch_size, - epochs=17, + epochs=max_epochs, verbose=2, - validation_data=([x_test_value, x_test_features], y_test), + validation_data=([x_test_line, x_test_variable, x_test_value, + x_test_features], y_test), class_weight=class_weight, + callbacks=[early_stopping, model_checkpoint], use_multiprocessing=True) - dir_path = pathlib.Path("results") - os.makedirs(dir_path, exist_ok=True) model_file_name = dir_path / f"ml_model_at-{current_time}" keras_model.save(model_file_name, include_optimizer=False) - print("Validate results on the test subset") - print(f"Test size: {len(y_test)}") - print(f"Class-1 prop on eval: {np.mean(y_test):.4f}") - evaluate_model(thresholds, keras_model, [x_test_value, x_test_features], y_test) - - print("Validate results on the full set") - print(f"Test size: {len(y_eval)}") - print(f"Class-1 prop on eval: {np.mean(y_eval):.4f}") - evaluate_model(thresholds, keras_model, [x_eval_value, x_eval_features], y_eval) + print(f"Validate results on the train subset. Size: {len(y_train)} {np.mean(y_train):.4f}") + evaluate_model(thresholds, keras_model, [x_train_line, x_train_variable, x_train_value, x_train_features], y_train) + del x_train_line + del x_train_variable + del x_train_value + del x_train_features + del y_train + + print(f"Validate results on the test subset. Size: {len(y_test)} {np.mean(y_test):.4f}") + evaluate_model(thresholds, keras_model, [x_test_line, x_test_variable, x_test_value, x_test_features], y_test) + del x_test_line + del x_test_variable + del x_test_value + del x_test_features + del y_test + + print(f"Validate results on the full set. Size: {len(y_full)} {np.mean(y_full):.4f}") + evaluate_model(thresholds, keras_model, [x_full_line, x_full_variable, x_full_value, x_full_features], y_full) + del x_full_line + del x_full_variable + del x_full_value + del x_full_features + del y_full # ml history analysis save_plot(stamp=current_time, - title=f"batch:{batch_size} train:{len_df_train} test:{len(df_test)} weights:{class_weights}", + title=f"batch:{batch_size} train:{len_df_train} test:{len_df_test} weights:{class_weights}", history=fit_history, dir_path=dir_path) @@ -165,6 +211,9 @@ def main(cred_data_location: str, jobs: int) -> str: _jobs = int(args.jobs) _model_file_name = main(_cred_data_location, _jobs) - # print in last line result model - print(f"\nYou can find your model in: \n{_model_file_name}") - # python -m tf2onnx.convert --saved-model results/ml_model_at-20240201_073238 --output ../credsweeper/ml_model/ml_model.onnx --verbose + # print in last line the name + print(f"\nYou can find your model in:\n{_model_file_name}") + + command = f"{sys.executable} -m tf2onnx.convert --saved-model {_model_file_name}" \ + f" --output {pathlib.Path(__file__).parent.parent}/credsweeper/ml_model/ml_model.onnx --verbose" + subprocess.check_call(command, shell=True, cwd=pathlib.Path(__file__).parent) diff --git a/experiment/main.sh b/experiment/main.sh index b37f4c933..2d50e5ee5 100755 --- a/experiment/main.sh +++ b/experiment/main.sh @@ -1,22 +1,31 @@ #!/usr/bin/env bash -set -e +set -ex CREDSWEEPER_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." > /dev/null 2>&1 && pwd )" export PYTHONPATH=${CREDSWEEPER_DIR}:$PYTHONPATH echo $PYTHONPATH -python -m credsweeper --banner +${CREDSWEEPER_DIR}/.venv/bin/python -m credsweeper --banner -rm -rf data +now=$(date +%Y%m%d_%H%M%S) -python main.py --data ~/q/DataCred/CredData -j 32 +RESULT_DIR=${CREDSWEEPER_DIR}/experiment/results +mkdir -vp ${RESULT_DIR} +${CREDSWEEPER_DIR}/.venv/bin/python main.py --data ~/w/CredData --jobs 32 | tee ${RESULT_DIR}/train.${now}.log -tf_model=$(tail -n1 main.log) +cd ${CREDSWEEPER_DIR} +report_file=${RESULT_DIR}/${now}.json +${CREDSWEEPER_DIR}/.venv/bin/python -m credsweeper --sort --path ~/q/DataCred/auxiliary/data/ --log error --job 32 --save-json ${report_file} -echo $tf_model +cd ~/q/DataCred/auxiliary/ +.venv/bin/python -m benchmark --scanner credsweeper --load ${report_file} | tee ${report_file}.log -pwd +#last_tf_model=$(cat train.log | tail -n1) -python -m tf2onnx.convert --saved-model $tf_model --output ../credsweeper/ml_model/ml_model.onnx --verbose +#echo $last_tf_model + +#pwd + +#python -m tf2onnx.convert --saved-model results/$last_tf_model --output ../credsweeper/ml_model/ml_model.onnx --verbose diff --git a/experiment/plot.py b/experiment/plot.py index 9da9369cb..eb4b9dd05 100644 --- a/experiment/plot.py +++ b/experiment/plot.py @@ -6,8 +6,10 @@ def save_plot(stamp: str, title: str, history: History, dir_path: pathlib.Path): + with open(dir_path / f"history-{stamp}.pickle", "wb") as f: + pickle.dump(history, f) plt.clf() - fig, axes = plt.subplots(2, 2) + fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(16, 9), tight_layout=True) fig.suptitle(f"{stamp} {title}") @@ -26,5 +28,13 @@ def save_plot(stamp: str, title: str, history: History, dir_path: pathlib.Path): axes[axes_x, axes_y].grid(visible=True, which="both", color="grey", linewidth=0.75, linestyle="dotted") axes[axes_x, axes_y].set_xticks(range(min(x), max(x) + 1, 1), minor=True) - plt.gcf().set_size_inches(16, 9) plt.savefig(dir_path / f"{stamp}.png", dpi=96) + + +# dbg +if __name__ == "__main__": + _dir_path = pathlib.Path("results") + current_time = "20240615_225056" + with open(f"results/history-{current_time}.pickle", "rb") as _f: + fit_history = pickle.load(_f) + save_plot(current_time, "title", fit_history, _dir_path) diff --git a/experiment/requirements.txt b/experiment/requirements.txt index 557bbe308..3fffd21de 100644 --- a/experiment/requirements.txt +++ b/experiment/requirements.txt @@ -6,6 +6,12 @@ protobuf==3.20.3 tensorflow==2.13.1 tf2onnx==1.16.0 wrapt==1.14.1 -matplotlib -tensorrt +tensorrt==10.1.0 + +# scikit-learn 1.5.0 may not support python 3.8 +scikit-learn==1.5.0 +# version +types-tensorflow +matplotlib +colorama diff --git a/experiment/src/data_loader.py b/experiment/src/data_loader.py index c2d1a51e1..d5742d042 100644 --- a/experiment/src/data_loader.py +++ b/experiment/src/data_loader.py @@ -1,50 +1,60 @@ +import contextlib import json import os import pathlib from copy import deepcopy -from typing import Tuple, Dict +from typing import Tuple, Dict, Set, Any import numpy as np import pandas as pd +from colorama import Fore, Style -identifier = Tuple[str, int] +from credsweeper.common.constants import ML_HUNK +from credsweeper.utils import Util -ml_categories = [ - "Authentication Credentials", # - "Cryptographic Primitives", # - "Generic Secret", # - "Generic Token", # - "Password", # - "Predefined Pattern", # -] +# path, line, val_start, val_end +identifier = Tuple[str, int, int, int] -def strip_data_path(file_path, split="CredData/"): +def transform_to_meta_path(file_path): + """Transform any path to 'data/xxxxxxxx/[type]/yyyyyyyy.ext' to find in meta markup""" file_path = pathlib.Path(file_path).as_posix() - return file_path.split(split, 1)[-1] + path_list = file_path.split('/') + meta_path = '/'.join(["data", path_list[-3], path_list[-2], path_list[-1]]) + return meta_path -def read_detected_data(file_path: str, split="CredData/") -> Dict[identifier, Dict]: +def read_detected_data(file_path: str) -> Dict[identifier, Dict]: print(f"Reading detections from {file_path}") with open(file_path) as f: detections = json.load(f) detected_lines = {} - for detection in detections: - if 1 != len(detection["line_data_list"]): - continue - for line_data in detection["line_data_list"]: - relative_path = strip_data_path(line_data["path"], split) - index = relative_path, line_data["line_num"] - data_to_save = deepcopy(line_data) - data_to_save["path"] = relative_path - data_to_save["RuleName"] = [detection["rule"]] - - if index not in detected_lines: - detected_lines[index] = data_to_save - else: - detected_lines[index]["RuleName"].append(detection["rule"]) + for cred in detections: + rule_name = cred["rule"] + # skip not ML values like private keys and so on. Unsupported for ml train. "use_ml" rules ONLY + assert 1 == len(cred["line_data_list"]), cred + line_data = deepcopy(cred["line_data_list"][0]) + line_data.pop("entropy_validation") + line_data.pop("info") + line = line_data["line"].lstrip() + offset = len(line_data["line"]) - len(line) + line_data["line"] = line.rstrip() + line_data["value_start"] -= offset + line_data["value_end"] -= offset + line_data["variable_start"] -= offset + line_data["variable_end"] -= offset + assert line_data["value"] == line_data["line"][line_data["value_start"]:line_data["value_end"]], line_data + meta_path = transform_to_meta_path(line_data["path"]) + line_data["path"] = meta_path + line_data["RuleName"] = [rule_name] + + index = meta_path, line_data["line_num"], line_data["value_start"], line_data["value_end"] + if index not in detected_lines: + detected_lines[index] = line_data + else: + detected_lines[index]["RuleName"].append(rule_name) print(f"Detected {len(detected_lines)} unique lines!") print(f"{len(detections)} detections in total") @@ -52,7 +62,7 @@ def read_detected_data(file_path: str, split="CredData/") -> Dict[identifier, Di return detected_lines -def read_metadata(meta_dir: str, split="CredData/") -> Dict[identifier, Dict]: +def read_metadata(meta_dir: str) -> Dict[identifier, Dict]: print(f"Reading meta from {meta_dir}") meta_lines = {} j = 0 @@ -62,54 +72,146 @@ def read_metadata(meta_dir: str, split="CredData/") -> Dict[identifier, Dict]: if not file_path.endswith(".csv"): print(f"skip garbage: {csv_file}") continue - file_meta = pd.read_csv(csv_file, dtype={'RepoName': str, 'GroundTruth': str}) - for i, row in file_meta.iterrows(): + try: + df = pd.read_csv(csv_file, + dtype={ + "RepoName": str, + "GroundTruth": str, + "Category": str, + "LineStart": "Int64", + "LineEnd": "Int64", + "ValueStart": "Int64", + "ValueEnd": "Int64", + }) + except Exception as exc: + print(csv_file, exc) + raise + # Int64 is important to change with NaN + df["LineStart"] = df["LineStart"].fillna(-1).astype(int) + df["LineEnd"] = df["LineEnd"].fillna(-1).astype(int) + df["ValueStart"] = df["ValueStart"].fillna(-1).astype(int) + df["ValueEnd"] = df["ValueEnd"].fillna(-1).astype(int) + # all templates are false + df.loc[df["GroundTruth"] == "Template", "GroundTruth"] = 'F' + for _, row in df.iterrows(): j += 1 - line_start = int(row["LineStart"]) - line_end = int(row["LineEnd"]) - if "Template" == row["GroundTruth"]: - print(f"WARNING: transform Template to FALSE\n{row}") - row["GroundTruth"] = "F" - if row["Category"] not in ml_categories: - print(f"WARNING: skip not ml category {row['FilePath']},{line_start},{line_end}" - f",{row['GroundTruth']},{row['Category']}") - continue - if line_start != line_end: - print(f"WARNING: skip multiline as train or test data {row}") + if row["LineStart"] != row["LineEnd"] or any(x in row["Category"] for x in ["AWS Multi", "Google Multi"]): + # print(f"WARNING: skip not ml category {row['FilePath']},{line_start},{line_end}" + # f",{row['GroundTruth']},{row['Category']}") continue - relative_path = strip_data_path(row["FilePath"], split) - index = relative_path, line_start + assert 'F' == row["GroundTruth"] or 'T' == row["GroundTruth"] and 0 <= row["ValueStart"], row + + meta_path = transform_to_meta_path(row["FilePath"]) + index = meta_path, row['LineStart'], row['ValueStart'], row['ValueEnd'] if index not in meta_lines: row_data = row.to_dict() - row_data["FilePath"] = relative_path + row_data["Used"] = False + row_data["FilePath"] = meta_path meta_lines[index] = row_data else: - print(f"WARNING: {index} already in meta_lines {row['GroundTruth']} {row['Category']}") + print(f"WARNING: {index} already in meta_lines {row['GroundTruth']} {row['Category']}" + f"\n{meta_lines[index]}") print(f"Loaded {len(meta_lines)} lines from meta of {j} total") return meta_lines -def join_label(detected_data: Dict[identifier, Dict], meta_data: Dict[identifier, Dict]) -> pd.DataFrame: +def get_colored_line(line_data: Dict[str, Any]) -> str: + val_start = int(line_data['value_start']) + val_end = int(line_data['value_end']) + colored_line = line_data['line'][:val_start] \ + + Fore.LIGHTYELLOW_EX \ + + line_data['line'][val_start:val_end] \ + + Style.RESET_ALL \ + + line_data['line'][val_end:] + + with contextlib.suppress(Exception): + var_start = int(line_data['variable_start']) + var_end = int(line_data['variable_end']) + if 0 <= var_start < var_end: + colored_line = colored_line[:var_start] \ + + Fore.LIGHTBLUE_EX \ + + colored_line[var_start:var_end] \ + + Style.RESET_ALL \ + + colored_line[var_end:] + + colored_sub_line = Util.subtext(colored_line, line_data['value_start'], ML_HUNK) + return f"{colored_sub_line}{Style.RESET_ALL}" + + +def join_label(detected_data: Dict[identifier, Dict], meta_data: Dict[identifier, Dict], + cred_data_location: str) -> pd.DataFrame: values = [] + detected_rules: Set[str] = set() for index, line_data in detected_data.items(): + for i in line_data["RuleName"]: + detected_rules.add(i) + if not line_data["value"]: + print(f"WARNING: empty value\n{line_data}") + continue label = False - if index not in meta_data: - print(f"WARNING: {index} is not in meta!!!\n{line_data}") - elif meta_data[index]["Category"] not in ml_categories: - # skip not ML values like private keys and so on - print(f"WARNING: {line_data} is not ML category! {meta_data[index]}") - else: - if 'T' == meta_data[index]["GroundTruth"]: + if markup := meta_data.get(index): + # it means index in meta_data with exactly match + if 'T' == markup["GroundTruth"]: + label = True + markup["Used"] = True + markup_rules = markup["Category"].split(':') + if not set(markup_rules).intersection(set(line_data["RuleName"])): + print(f"1.CHECK CATEGORIES\n{markup_rules}, {line_data['RuleName']}\n{str(markup)}" + f"\nsub_line:'{get_colored_line(line_data)}'") + elif markup := meta_data.get((index[0], index[1], index[2], -1)): + # perhaps, the line has only start markup - so value end position is -1 + if 'T' == markup["GroundTruth"]: label = True + markup["Used"] = True + markup_rules = markup["Category"].split(':') + if not set(markup["Category"].split(':')).intersection(set(line_data["RuleName"])): + print(f"2.CHECK CATEGORIES\n{markup_rules}, {line_data['RuleName']}\n{str(markup)}" + f"\nsub_line:'{get_colored_line(line_data)}'") + elif markup := meta_data.get((index[0], index[1], -1, -1)): + # perhaps, the line has false markup - so value start-end position is -1, -1 + if 'T' == markup["GroundTruth"]: + raise RuntimeError(f"ERROR: markup {markup} cannot be TRUE\n{line_data}") + markup["Used"] = True + markup_rules = markup["Category"].split(':') + if not set(markup["Category"].split(':')).intersection(set(line_data["RuleName"])): + print(f"3.CHECK CATEGORIES\n{markup_rules}, {line_data['RuleName']}\n{str(markup)}" + f"\nsub_line:'{get_colored_line(line_data)}'") + else: + print(f"WARNING: {index} is not in meta!!!" + f"\nvariable:'{line_data['variable']}' value:'{line_data['value']}'" + f"\nsub_line:'{get_colored_line(line_data)}'") + continue + line = line_data["line"] + # the line in detected data must be striped + assert line == line.strip(), line_data + # check the value in detected data + assert line[line_data["value_start"]:line_data["value_end"]] == line_data["value"] + # todo: variable input has to be markup in meta too, or/and new feature "VariableExists" created ??? line_data["GroundTruth"] = label + line_data["ext"] = Util.get_extension(line_data["path"]) + line_data["type"] = line_data["path"].split('/')[-2] values.append(line_data) - # values = list(detected_data.values()) + + for markup in meta_data.values(): + if 'T' == markup["GroundTruth"] and not markup["Used"]: + for markup_rule in markup["Category"].split(':'): + if markup_rule in detected_rules: + print(f"WARNING: Not found! {markup}") + text = Util.read_file(f'{cred_data_location}/{markup["FilePath"]}') + line = text[markup["LineStart"] - 1].strip() + if 0 <= markup["ValueStart"] and 0 <= markup["ValueEnd"]: + line = line[:markup["ValueStart"]] \ + + Fore.LIGHTGREEN_EX \ + + line[markup["ValueStart"]:markup["ValueEnd"]] \ + + Style.RESET_ALL \ + + line[markup["ValueEnd"]:] + print(line) + # print(Util.subtext(line, markup['ValueStart'], ML_HUNK)) + break + df = pd.DataFrame(values) - df["repo"] = [repo.split("/")[1] for repo in df["path"]] - df["ext"] = [os.path.splitext(ext)[-1] for ext in df["path"]] - df["type"] = [repo.split("/")[2] for repo in df["path"]] # src, test, other return df diff --git a/experiment/src/features.py b/experiment/src/features.py index 75adf3c2e..54b1741a5 100644 --- a/experiment/src/features.py +++ b/experiment/src/features.py @@ -3,63 +3,103 @@ import numpy as np import pandas as pd -from credsweeper.common.constants import Severity +from credsweeper.common.constants import Severity, ML_HUNK from credsweeper.credentials import Candidate from credsweeper.credentials import LineData from credsweeper.ml_model import MlValidator from credsweeper.utils import Util -ml_validator = MlValidator(0.5) # Initialize global MLValidator object - class CustomLineData(LineData): """Object that allows to create LineData from scanner results""" - def __init__(self, line: str, value: str, line_num: int, path: str, variable: str) -> None: + def __init__(self, line: str, value: str, line_num: int, path: str, variable: str, value_start: int) -> None: self.line: str = line self.line_num: int = line_num self.path: str = path self.value = value self.file_type = Util.get_extension(path) self.variable = variable + self.value_start = value_start def get_candidates(line_data: dict): """Get list of candidates. 1 candidate for each rule that detected this line""" ld = CustomLineData(line_data["line"], line_data["value"], line_data["line_num"], line_data["path"], - line_data["variable"]) + line_data["variable"], line_data["value_start"]) candidates = [] for rule in line_data["RuleName"]: - candidates.append(Candidate([ld], [], rule, Severity.MEDIUM, None, None, True)) - + candidates.append( + Candidate( + line_data_list=[ld], + patterns=[], + rule_name=rule, + severity=Severity.MEDIUM, + use_ml=True, + )) return candidates -def get_features(line_data: Union[dict, pd.Series]): +def get_features(line_data: Union[dict, pd.Series], + ml_validator: MlValidator) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """Get features from a single detection using CredSweeper.MlValidator module""" - value = line_data["value"] + candidates = get_candidates(line_data) - line_input = ml_validator.encode(value, ml_validator.char_to_index) + line_input = MlValidator.encode_line(line_data["line"], line_data["value_start"]) + if variable := line_data["variable"]: + if len(variable) > ML_HUNK: + variable = variable[:ML_HUNK] + variable_input = MlValidator.encode_value(variable) + else: + variable_input = MlValidator.encode_value('') - common_features = ml_validator.extract_common_features(candidates) - unique_features = ml_validator.extract_unique_features(candidates) + if value := line_data["value"]: + if len(value) > ML_HUNK: + value = value[:ML_HUNK] + value_input = MlValidator.encode_value(value) + else: + raise RuntimeError(f"Empty value is not allowed {line_data}") - extracted_features = np.hstack([common_features, unique_features]) + line = line_data["line"] + assert line[line_data["value_start"]:].startswith(line_data["value"]), line_data - return line_input, extracted_features + extracted_features = ml_validator.extract_features(candidates) + return line_input, variable_input, value_input, extracted_features -def prepare_data(df: pd.DataFrame) -> Tuple[np.ndarray, np.ndarray]: + +def prepare_data(df: pd.DataFrame) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """Get features from a DataFrame detection using CredSweeper.MlValidator module""" + + ml_validator = MlValidator(0.5) # MLValidator object loads config (MAY be updated!) with features + x_size = len(df) - x_values = np.zeros([x_size, 160, 70], dtype=np.float32) - x_features = np.zeros([x_size, 131], dtype=np.float32) + x_line_input = np.zeros(shape=[x_size, MlValidator.MAX_LEN, MlValidator.NUM_CLASSES], dtype=np.float32) + x_variable_input = np.zeros(shape=[x_size, ML_HUNK, MlValidator.NUM_CLASSES], dtype=np.float32) + x_value_input = np.zeros(shape=[x_size, ML_HUNK, MlValidator.NUM_CLASSES], dtype=np.float32) + # features size preprocess to calculate the dimension automatically + features = get_features( # + line_data={ # + "path": "", # + "line_num": 1, # + "line": "ABC123", # + "value": "123", # + "value_start": 3, # + "variable": None, # + "RuleName": ["API"], # + }, # + ml_validator=ml_validator) + features_size = features[3].shape[1] + print(f"Features size: {features_size}", flush=True) + x_features = np.zeros(shape=[x_size, features_size], dtype=np.float32) n = 0 for i, row in df.iterrows(): - assert row["line"] is not None, row - line_input, extracted_features = get_features(row) - x_values[n] = line_input + assert bool(row["line"]) and bool(row["value"]), row + line_input, variable_input, value_input, extracted_features = get_features(row, ml_validator) + x_line_input[n] = line_input + x_variable_input[n] = variable_input + x_value_input[n] = value_input x_features[n] = extracted_features n += 1 - return x_values, x_features + return x_line_input, x_variable_input, x_value_input, x_features diff --git a/experiment/src/lstm_model.py b/experiment/src/lstm_model.py index e0a4aa1f4..c44b6522a 100644 --- a/experiment/src/lstm_model.py +++ b/experiment/src/lstm_model.py @@ -1,38 +1,56 @@ -import tensorflow as tf -from tensorflow.keras.layers import Dense, LSTM, Bidirectional, Input, Concatenate +from tensorflow.keras.layers import Dense, LSTM, Bidirectional, Input, Concatenate, Dropout from tensorflow.keras.models import Model +from tensorflow.keras.optimizers import Adam +from tensorflow.python.keras.metrics import BinaryAccuracy, Precision, Recall -DEFAULT_METRICS = [tf.keras.metrics.BinaryAccuracy(), tf.keras.metrics.Precision(), tf.keras.metrics.Recall()] +from credsweeper import MlValidator +from credsweeper.common.constants import ML_HUNK -def get_model_string_features(vocab_size: int, feature_size: int) -> Model: - """Get keras model with string and feature input and single binary out +def get_model( + line_shape: tuple, + variable_shape: tuple, + value_shape: tuple, + feature_shape: tuple, + # learning_rate: float, +) -> Model: + """Get keras model with string and feature input and single binary out""" + d_type = "float32" - Args: - vocab_size: Datasets vocabulary size - feature_size: numbers of features used for training + line_input = Input(shape=(None, line_shape[2]), name="line_input", dtype=d_type) + line_lstm = LSTM(units=line_shape[1], dtype=d_type) + line_bidirectional = Bidirectional(layer=line_lstm) + line_lstm_branch = Dropout(0.33)(line_bidirectional(line_input)) - Return: - Keras model - """ - d_type = "float32" - lstm_input = Input(shape=(None, vocab_size), name="line_input", dtype=d_type) - bidirectional = Bidirectional(layer=LSTM(units=123, dtype=d_type)) - lstm_branch = bidirectional(lstm_input) + variable_input = Input(shape=(None, variable_shape[2]), name="variable_input", dtype=d_type) + variable_lstm = LSTM(units=variable_shape[1], dtype=d_type) + variable_bidirectional = Bidirectional(layer=variable_lstm) + variable_lstm_branch = Dropout(0.33)(variable_bidirectional(variable_input)) + + value_input = Input(shape=(None, value_shape[2]), name="value_input", dtype=d_type) + value_lstm = LSTM(units=value_shape[1], dtype=d_type) + value_bidirectional = Bidirectional(layer=value_lstm) + value_lstm_branch = Dropout(0.33)(value_bidirectional(value_input)) + + feature_input = Input(shape=(feature_shape[1], ), name="feature_input", dtype=d_type) - feature_input = Input(shape=(feature_size, ), name="feature_input", dtype=d_type) + joined_features = Concatenate()([line_lstm_branch, variable_lstm_branch, value_lstm_branch, feature_input]) - concatenation = Concatenate() - joined_features = concatenation([lstm_branch, feature_input]) - dense_a = Dense(units=63, activation='relu', name="dense", dtype=d_type) + # 3 bidirectional + features + dense_units = 2 * MlValidator.MAX_LEN + 2 * 2 * ML_HUNK + feature_shape[1] + # check after model compilation. Should be matched the combined size. + dense_a = Dense(units=dense_units, activation='relu', name="dense", dtype=d_type) joined_layers = dense_a(joined_features) + dropout = Dropout(0.33) + dropout_layer = dropout(joined_layers) dense_b = Dense(units=1, activation='sigmoid', name="prediction", dtype=d_type) - output = dense_b(joined_layers) + output = dense_b(dropout_layer) - model = Model(inputs=[lstm_input, feature_input], outputs=output) + model: Model = Model(inputs=[line_input, variable_input, value_input, feature_input], outputs=output) - model.compile(optimizer='adam', loss='binary_crossentropy', metrics=DEFAULT_METRICS) + metrics = [BinaryAccuracy(name="binary_accuracy"), Precision(name="precision"), Recall(name="recall")] + model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=metrics) - model.summary() + model.summary(line_length=120, expand_nested=True, show_trainable=True) return model diff --git a/experiment/src/model_config_preprocess.py b/experiment/src/model_config_preprocess.py new file mode 100644 index 000000000..4ad50b30d --- /dev/null +++ b/experiment/src/model_config_preprocess.py @@ -0,0 +1,70 @@ +from typing import Set, Dict + +import pandas as pd + +from credsweeper.app import APP_PATH +from credsweeper.utils import Util + + +def model_config_preprocess(df_all: pd.DataFrame) -> Dict[str, float]: + model_config_path = APP_PATH / "ml_model" / "model_config.json" + model_config = Util.json_load(model_config_path) + + # check whether all extensions from meta are in model_config.json + + for x in model_config["features"]: + if "FileExtension" == x["type"]: + config_extensions = x["kwargs"]["extensions"] + config_extensions_set = set(config_extensions) + if len(config_extensions) != len(config_extensions_set): + print("WARNING: duplicates in config extensions list") + if any(x != x.lower() for x in config_extensions_set): + print("WARNING: file extensions in config must be in lowercase") + break + else: + raise RuntimeError(f"FileExtension was not found in config ({model_config_path}) features!") + + data_extension_set = set(df_all["ext"].unique()) + + if config_extensions_set != data_extension_set: + for x in model_config["features"]: + if "FileExtension" == x["type"]: + x["kwargs"]["extensions"] = sorted(list(data_extension_set)) + Util.json_dump(model_config, model_config_path) + break + # the process must be restarted with updated config + raise RuntimeError(f"RESTART: differences in extensions:" + f"\nconfig:{config_extensions_set.difference(data_extension_set)}" + f"\ndata:{data_extension_set.difference(config_extensions_set)}" + f"\nFile {model_config_path} was updated.") + + # append all rule names for the feature + + for x in model_config["features"]: + if "RuleName" == x["type"]: + config_rules = x["kwargs"]["rule_names"] + config_rules_set = set(config_rules) + if len(config_rules) != len(config_rules_set): + print("WARNING: duplicates in config rule_names list") + break + else: + raise RuntimeError(f"FileExtension was not found in config ({model_config_path}) features!") + + data_rules_set = set(df_all["RuleName"].explode().unique()) + + if config_rules_set != data_rules_set: + for x in model_config["features"]: + if "RuleName" == x["type"]: + x["kwargs"]["rule_names"] = sorted(list(data_rules_set)) + Util.json_dump(model_config, model_config_path) + break + # the process must be restarted with updated config + raise RuntimeError(f"RESTART: differences in extensions:" + f"\nconfig:{config_rules_set.difference(data_rules_set)}" + f"\ndata:{data_rules_set.difference(config_rules_set)}" + f"\nFile {model_config_path} was updated.") + + thresholds = model_config["thresholds"] + assert isinstance(thresholds, dict), thresholds + print(f"Load thresholds: {thresholds}") + return thresholds diff --git a/experiment/src/prepare_data.py b/experiment/src/prepare_data.py index e67cb2e8c..48d8e9075 100644 --- a/experiment/src/prepare_data.py +++ b/experiment/src/prepare_data.py @@ -10,22 +10,21 @@ def execute_scanner(dataset_location: str, result_location_str, j): dir_path = os.path.dirname(os.path.realpath(__file__)) + "/.." command = f"{sys.executable} -m credsweeper --path {dataset_location}/data" \ f" --save-json {result_location_str} " \ - f"--job {j} --sort --rules train_config.yaml --ml_threshold 0" + f"--job {j} --sort --rules results/train_config.yaml --ml_threshold 0" subprocess.check_call(command, shell=True, cwd=dir_path, stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT) def prepare_train_data(cred_data_location: str, j: int): print("Start train data preparation...") - os.makedirs("data", exist_ok=True) if not os.path.exists("train_config.yaml"): - # use only rules which marked as use_ml may be valuable + # use pattern or keyword type rules = Util.yaml_load("../credsweeper/rules/config.yaml") new_rules = [x for x in rules if x.get("use_ml")] - Util.yaml_dump(new_rules, "train_config.yaml") + Util.yaml_dump(new_rules, "results/train_config.yaml") - if not os.path.exists("data/result.json"): + if not os.path.exists("results/detected_data.json"): print(f"Get CredSweeper results from {cred_data_location}. May take some time") - execute_scanner(cred_data_location, "data/result.json", j) + execute_scanner(cred_data_location, "results/detected_data.json", j) print("Train data prepared!") diff --git a/fuzz/__main__.py b/fuzz/__main__.py index 20349d5db..8f8de655f 100755 --- a/fuzz/__main__.py +++ b/fuzz/__main__.py @@ -18,6 +18,7 @@ import logging import os import sys +import warnings from unittest.mock import patch, MagicMock import atheris @@ -25,6 +26,7 @@ # # # It runs quickly but not precisely # with atheris.instrument_imports(enable_loader_override=False): import requests +from bs4 import XMLParsedAsHTMLWarning from google_auth_oauthlib.flow import InstalledAppFlow from oauthlib.oauth2 import InvalidGrantError from requests import Response @@ -38,12 +40,14 @@ GoogleMultiValidation from credsweeper.validations.apply_validation import ApplyValidation +warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning) + # set log level for fuzzing logging.basicConfig(level=logging.CRITICAL) logger = logging.getLogger(__name__) # Use depth=3 to deep scan in .zip and .gz files + find by extension feature -cred_sweeper = CredSweeper(depth=3, find_by_ext=True, ml_threshold=0.0001) +cred_sweeper = CredSweeper(find_by_ext=True, ml_threshold=0.0001) api_validation = ApplyValidation() MOCK_RESPONSE_SIZE = 0x0100 # 256 bytes enough for mocking response @@ -103,6 +107,8 @@ def fuzz_credsweeper_scan(data: bytes): candidates = [] + cred_sweeper.config.doc = False + cred_sweeper.config.depth = 3 cred_sweeper.credential_manager.candidates.clear() patch_provider_add = PatchesProvider([_io], change_type=DiffRowType.ADDED) with patch.object(CredSweeper, CredSweeper.export_results.__name__): @@ -111,6 +117,8 @@ def fuzz_credsweeper_scan(data: bytes): _io.seek(0, io.SEEK_SET) + cred_sweeper.config.doc = False + cred_sweeper.config.depth = 0 cred_sweeper.credential_manager.candidates.clear() patch_provider_del = PatchesProvider([_io], change_type=DiffRowType.DELETED) with patch.object(CredSweeper, CredSweeper.export_results.__name__): @@ -119,6 +127,18 @@ def fuzz_credsweeper_scan(data: bytes): _io.seek(0, io.SEEK_SET) + cred_sweeper.config.doc = True + cred_sweeper.config.depth = 0 + cred_sweeper.credential_manager.candidates.clear() + text_provider = FilesProvider(["dummy.template", _io]) + with patch.object(CredSweeper, CredSweeper.export_results.__name__): + cred_sweeper.run(text_provider) + candidates.extend(cred_sweeper.credential_manager.get_credentials()) + + _io.seek(0, io.SEEK_SET) + + cred_sweeper.config.doc = False + cred_sweeper.config.depth = 3 cred_sweeper.credential_manager.candidates.clear() text_provider = FilesProvider(["dummy.template", _io]) with patch.object(CredSweeper, CredSweeper.export_results.__name__): diff --git a/fuzz/auxilary.py b/fuzz/auxilary.py index e1883de7c..f87c7ac30 100644 --- a/fuzz/auxilary.py +++ b/fuzz/auxilary.py @@ -1,12 +1,16 @@ +import binascii +import random +import string import sys OLD_SEED_SIZE = 2048 NEW_SEED_SIZE = 4096 - 256 -# run in fuzz: for f in $(find tmp -type f); do python3 auxilary.py $f; done +# run in fuzz: for f in $(find corpus -type f); do python3 auxilary.py $f; done def main(argv): + ascii_chars = string.digits + string.ascii_letters + string.punctuation + ' ' responses = [ b'{"status":"PASS"}', b'{"status":"REQUEST_DENIED","error_message":"The provided API key is invalid."}', @@ -18,7 +22,8 @@ def main(argv): b'Unable to find client by that `client_id`', b'{"error":{"message":null}}', b'{"error":{"message":""}}', - b'{"error":{"message":"The provided key \'rk_xxxHaving the \'rak_charge_read\' permission would allow this request to continue."}}', + b"""{"error":{"message":"The provided key 'rk_xxxHaving the 'rak_charge_read'""" + b""" permission would allow this request to continue."}}""", ] for i in argv[1:]: with open(i, "rb") as f: @@ -29,6 +34,11 @@ def main(argv): f.write(data[:data_size]) f.write(b'\n' * (NEW_SEED_SIZE - data_size)) f.write(x) + crc32 = binascii.crc32(data) + random.seed(crc32) + text = ''.join(random.choice(ascii_chars) for _ in range(NEW_SEED_SIZE)) + with open(f"{i}.{crc32:08x}", "w") as f: + f.write(text) if __name__ == "__main__": diff --git a/fuzz/corpus/5e4a443484c79b7bf16d89693d4b44a2dbaf890f b/fuzz/corpus/0122905efe99874df6d34aab9b5ad823888a5a73 similarity index 53% rename from fuzz/corpus/5e4a443484c79b7bf16d89693d4b44a2dbaf890f rename to fuzz/corpus/0122905efe99874df6d34aab9b5ad823888a5a73 index 3aa031018..a75aad178 100644 --- a/fuzz/corpus/5e4a443484c79b7bf16d89693d4b44a2dbaf890f +++ b/fuzz/corpus/0122905efe99874df6d34aab9b5ad823888a5a73 @@ -1,2 +1,2 @@ cmVmdGtuOlRoZXJlIGFyZSBub3QgdGhlIHRva2VucyB5b3UncmUgbG9va2luZyA0 -AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVF0 +AKCp2UNCd8uK7hQo-vaFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVF0 diff --git a/fuzz/corpus/018ba6b1fb3afcc31a2b115a2653842869e51834 b/fuzz/corpus/018ba6b1fb3afcc31a2b115a2653842869e51834 deleted file mode 100644 index ff86f7a32..000000000 --- a/fuzz/corpus/018ba6b1fb3afcc31a2b115a2653842869e51834 +++ /dev/null @@ -1 +0,0 @@ -# this is encrypted d {"secretKey":pwdNC(2dfRFqV/"se(etKecrypted d {"secretKey":pwdNC(2dfRFqV/"se(etKey":y": "} \ No newline at end of file diff --git a/fuzz/corpus/041126966f0b6cb8951ca20401e739cf4cf83489 b/fuzz/corpus/041126966f0b6cb8951ca20401e739cf4cf83489 new file mode 100644 index 000000000..ba8bfee0a --- /dev/null +++ b/fuzz/corpus/041126966f0b6cb8951ca20401e739cf4cf83489 @@ -0,0 +1,13 @@ + + CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr " + "9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\ +""" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\r\n +"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\ +Uaxk9J5Th8BXPyC1mclPMS7J\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\r5micHFiMI7/IcVZ4\n +2cl1OwdGjRdmO1LT6P1cl8UYIj/S\n-----END RSA PRIVATE KEY-----"""; + +# all private--END PGP PRIVATE KEY----- + +# low entropy fake key +-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY----- +123password = "cackle!" \ No newline at end of file diff --git a/fuzz/corpus/0725908c75d8ea2ad1f55f6f5bb5d24ef6cf222b b/fuzz/corpus/0725908c75d8ea2ad1f55f6f5bb5d24ef6cf222b new file mode 100644 index 000000000..fec0a02af --- /dev/null +++ b/fuzz/corpus/0725908c75d8ea2ad1f55f6f5bb5d24ef6cf222b @@ -0,0 +1,2 @@ +bitbucket_client : "0DIwN2M1NefTgs3Ghr54TMxNzOhFZPhB" +bitbucket_client_2 : "0DIwN2M1NTeGd6S6jU" diff --git a/fuzz/corpus/0b772268800113076f13e85d2dfb9378ced23bff b/fuzz/corpus/0b772268800113076f13e85d2dfb9378ced23bff deleted file mode 100644 index 4df973ea6..000000000 Binary files a/fuzz/corpus/0b772268800113076f13e85d2dfb9378ced23bff and /dev/null differ diff --git a/fuzz/corpus/9c31c91acbe1965c529474fcbda9479184f6f44f b/fuzz/corpus/0d6694978676cc8826b359e9b18c2a18164431e7 similarity index 57% rename from fuzz/corpus/9c31c91acbe1965c529474fcbda9479184f6f44f rename to fuzz/corpus/0d6694978676cc8826b359e9b18c2a18164431e7 index ca03aebff..8179ee05c 100644 --- a/fuzz/corpus/9c31c91acbe1965c529474fcbda9479184f6f44f +++ b/fuzz/corpus/0d6694978676cc8826b359e9b18c2a18164431e7 @@ -1,4 +1,3 @@ # Classic ghp_00000000000000000000000000000004WZ4EQ -# ram -ghp_101011001R00010101010010101 +#101 diff --git a/fuzz/corpus/0f50686cefde06d28bcdfd9aa06d8d403c56c78f b/fuzz/corpus/0f50686cefde06d28bcdfd9aa06d8d403c56c78f deleted file mode 100644 index ad34d1206..000000000 --- a/fuzz/corpus/0f50686cefde06d28bcdfd9aa06d8d403c56c78f +++ /dev/null @@ -1 +0,0 @@ -vap]unique_vals ,'wpv1jq9xwanbn3n'; diff --git a/fuzz/corpus/0f6a88d699f365b8a92ca8dca9dae4d3a4046472 b/fuzz/corpus/0f6a88d699f365b8a92ca8dca9dae4d3a4046472 new file mode 100644 index 000000000..0efaa77ce --- /dev/null +++ b/fuzz/corpus/0f6a88d699f365b8a92ca8dca9dae4d3a4046472 @@ -0,0 +1,149 @@ +GI_REO_GI_FACEBOOK_TOKENrk_live_48ehKQ_TOKENrk_live_48ehKQINMST2CEBOOK_TOKENrk_live_48ehK!QIN patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IO/.changes/2.16.98.json +new file mode 100mV?d00001 + +diff --git bHcmV?d0000EAYZQ=ik1_J;YNemtU + +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d00001 + +diff --git bHcmV?d0000EAYZ644 +index|2*86..a#I?WBEWEAYZQ=|2*k--git db43af63c59cra 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +Hcbody: + string: !!binary | + H4sICIur8mIAA3BlbV9rZXkAbdM3kqNAAEDRnFNMTk3hEQo2oAG1uKIBASIbnLDC29OvifenP37f + +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttVe\":\"wordpress\"},\"name\":\"wordpressw-rodpress\",\"namespace# Co +# k +us1.16.98.json b/.changes/2.16.98.json +new file mode 100mV?d00001 + +diff --git bHcmV?d0000EAYZQ=ik1_J;YNemtU + +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +liter0l 4a +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d00001 + +diff --git bHcmV?d0000EAYZ644 +index|2*86..a#I?WBEWEAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d00001 + +diff P-git bHcmV?d0000EAYZ644 +index 00000000..ion``", ++ "passwozd": "dkajco1" ++} + +notations\":{},\"labels\":{\"app\":\"wQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d00001 + +diff --git be9b1d 100qXyP_pg;ItKKKKKKKKKKKKKKKKKKKKKKKKmtU + +litea r0 +Hcbody: + string: !!binary | + H4sICIur8mIAA3BlbV9rZXkAbdM3kqNAAEDRnFNMTk3hEQo2oAG1uKIBASIbnLDC29Ovif`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d00001 + +diff P-git bHcmV?d0000EAYZ644 +index 00000000..ion``", ++ "passwozd": "dkajco1" ++} + +notations\":{},\"labels\":{\"app\":\"wQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?IN patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IO/.changes/2.16.98.json +new file mode 100mV?d00001 + +diff --git bHcmV?d0000EAYZQ=ik1_J;YNemtU + +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d00001 + +diff --git bHcmV?d0000EAYZ644 +index|2*86..a#I?WBEWEAYZQ=|2*k--git db43af63c59cra 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +Hcbody: + string: !!binary | + H4sICIur8mIAA3BlbV9rZXkAbdM3kqNAAEDRnFNMTk3hEQo2oAG1uKIBASIbnLDC29OvifenP37f + +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttVe\":\"wordpress\"},\"name\":\"wordpressw-rodpress\",\"namespace# Co +# k +us1.16.98.json b/.changes/2.16.98.json +new file mode 100mV?d00001 + +diff --git bHcmV?d0000EAYZQ=ik1_J;YNemtU + +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +liter0l 4a +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU + +litera 0 +HcmV?d00001 + +diYd +oINMST2CEBOOK_TOKENrk_live_48ehKQINMST2 = "EAACEdE = "EAACEdEdsose0cBAlGy7KeQjfwyVI77Y5Ynad4jCoup39tiYd +oQ4jHF" \ No newline at end of file diff --git a/fuzz/corpus/10af27df9eab155150c5f1f1717a9651f4d5693c b/fuzz/corpus/10af27df9eab155150c5f1f1717a9651f4d5693c new file mode 100644 index 000000000..02da83e1b --- /dev/null +++ b/fuzz/corpus/10af27df9eab155150c5f1f1717a9651f4d5693c @@ -0,0 +1 @@ +grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19' \ No newline at end of file diff --git a/fuzz/corpus/173cc14325f5832f40d85ce74067e6440afe938d b/fuzz/corpus/173cc14325f5832f40d85ce74067e6440afe938d new file mode 100644 index 000000000..5d56bd6b2 --- /dev/null +++ b/fuzz/corpus/173cc14325f5832f40d85ce74067e6440afe938d @@ -0,0 +1,2 @@ +# this is encrypted key that should be not found {"secretKey": "ENC(2dfRFqAIzaGiReoG-CrackleCrackle12315618_12315V/cS6TzRd+J +yO=)"} \ No newline at end of file diff --git a/fuzz/corpus/1d5bcb38459e1af77e90970cc0bd8afa4ae25491 b/fuzz/corpus/1d5bcb38459e1af77e90970cc0bd8afa4ae25491 deleted file mode 100644 index 18cde9024..000000000 --- a/fuzz/corpus/1d5bcb38459e1af77e90970cc0bd8afa4ae25491 +++ /dev/null @@ -1,33 +0,0 @@ -{ - "key": "apikertion(+) - create mode 100644 dynatrace_api.zip - create mode 100644 google_api_key_with_null_terminator - create mode 100644 square_secret_|2*kV$G7Kq|d5I-OiOH$)i3ORVA)E}%_f5|x -zy#(UY3T_5QmKV$n3}Axw;B6rX1)%nF`O6bFou3tzROVXp@s#?H|Aps%Z}q?3S>YA# -zxNdj)EYlS}b8JGyg7Xa}wujtWvwg9)mv+;vvr}dADtX-(^(6N+C(YT)lWLG7tdu$7 -zxbIc8i=lmI%Efq@Z-w={xSXbxtDI2g^b0p6@^AjOP87!0Hrf;bESZ=O$5 - -literal 0 -HcmV?d00001 - -diff --git a/google_api_key_with_null_terminator b/google_api_key_with_null_terminator -new file mode 100644 -index 0000000000000000000000000000000000000000..630bcfb886ee222a9ddfbd1080bdb43af63c59ca -GIT binary patch -literal 40 -mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU - -literal 0 -HcmV?d00001 - -diff --git a/creds.py b/creds.py -index 7a91586..abe9b1d 100644 ---- a/creds.py -+++ b/creds.py -@@ -3,7 +3,7 @@ -+ - -+ clid = "AKIAQWADE5R42RDZ4JEM" -+ token = "V84C7sDU001tFFodKU95USNy97TkqXymny", - "val&ue": "QMVZmlNkWEYvQzF" -} \ No newline at end of file diff --git a/fuzz/corpus/201fd909e3e50c0f74a110c5f92c73a51d50401b b/fuzz/corpus/201fd909e3e50c0f74a110c5f92c73a51d50401b deleted file mode 100644 index 2b33e7a8f..000000000 Binary files a/fuzz/corpus/201fd909e3e50c0f74a110c5f92c73a51d50401b and /dev/null differ diff --git a/fuzz/corpus/20bb3787c7f914def39aff2ed2b9f36ca5eeeb91 b/fuzz/corpus/20bb3787c7f914def39aff2ed2b9f36ca5eeeb91 new file mode 100644 index 000000000..5fbb1ed0e --- /dev/null +++ b/fuzz/corpus/20bb3787c7f914def39aff2ed2b9f36ca5eeeb91 @@ -0,0 +1 @@ +PKn.api:`_ \ No newline at end of file diff --git a/fuzz/corpus/9e605fdd07970b969f63283a8099b948a7551d86 b/fuzz/corpus/24d3f230381e9c22bd4416d6fb3853906456d128 similarity index 86% rename from fuzz/corpus/9e605fdd07970b969f63283a8099b948a7551d86 rename to fuzz/corpus/24d3f230381e9c22bd4416d6fb3853906456d128 index f8880662f..bff735cd5 100644 Binary files a/fuzz/corpus/9e605fdd07970b969f63283a8099b948a7551d86 and b/fuzz/corpus/24d3f230381e9c22bd4416d6fb3853906456d128 differ diff --git a/fuzz/corpus/24db32ffebb8419eb76eac751692039450f56d44 b/fuzz/corpus/24db32ffebb8419eb76eac751692039450f56d44 new file mode 100644 index 000000000..1fb2ed130 Binary files /dev/null and b/fuzz/corpus/24db32ffebb8419eb76eac751692039450f56d44 differ diff --git a/fuzz/corpus/26dc66802075de75722c93f9c78f8825bb479553 b/fuzz/corpus/26dc66802075de75722c93f9c78f8825bb479553 deleted file mode 100644 index 49968367e..000000000 --- a/fuzz/corpus/26dc66802075de75722c93f9c78f8825bb479553 +++ /dev/null @@ -1 +0,0 @@ -eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM1ZRN3N5SEpsWSJ9.eyJhjoiI1NiIsIng1dCI6Imk2bEdrM1ZRN3N5SEpsWSJ9.eyJhjoiMMS4w3VRN3N5SEpsWSJ9.eyJHd \ No newline at end of file diff --git a/fuzz/corpus/2b4a5d6d20a3c85556e8c21cfefd73e0be4edaea b/fuzz/corpus/2b4a5d6d20a3c85556e8c21cfefd73e0be4edaea new file mode 100644 index 000000000..5e5ed5037 Binary files /dev/null and b/fuzz/corpus/2b4a5d6d20a3c85556e8c21cfefd73e0be4edaea differ diff --git a/fuzz/corpus/2d41d950f43caddc85821d0d5a4f7ee5358fb1ff b/fuzz/corpus/2d41d950f43caddc85821d0d5a4f7ee5358fb1ff new file mode 100644 index 000000000..990e385c5 --- /dev/null +++ b/fuzz/corpus/2d41d950f43caddc85821d0d5a4f7ee5358fb1ff @@ -0,0 +1,2 @@ +appam:ATBBcCe6fczW96zW96Vzwg8F2gZS54D591C4 +f diff --git a/fuzz/corpus/2fb69821825c779cb48103db6600a351254b015c b/fuzz/corpus/2fb69821825c779cb48103db6600a351254b015c new file mode 100644 index 000000000..86a6b4f74 --- /dev/null +++ b/fuzz/corpus/2fb69821825c779cb48103db6600a351254b015c @@ -0,0 +1,8 @@ + +"AwsAccessKey": "AKIAGIREOGIAWSKEY123", "AwsAc +"AwsAccessKey2": "AKIAGIREOGIAWSKEY555", + +"AwsSecretKey":"CrackleGiReoGi123CrackleGiReoGi123AWSkey"cessKey": "AKIAGIREOGIAWSKEY123", "AwsAccessKey2": "AKIAGIREKAOGSIWEY555", + +"AwsSecretKey":"CrackleGiReoGi123CrackleGiReoG +i123AWSkey" diff --git a/fuzz/corpus/303e50ba7460dafb5e207f4c150df38e86a3280a b/fuzz/corpus/303e50ba7460dafb5e207f4c150df38e86a3280a deleted file mode 100644 index cbc0a81a6..000000000 --- a/fuzz/corpus/303e50ba7460dafb5e207f4c150df38e86a3280a +++ /dev/null @@ -1,971 +0,0 @@ -sq0atp-GIREOGICRACKLE12145178 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -iiii$payload =iiiiiiiiiiiiiiiiiiiiiiii -#wor>:AAEuLPKs-EhrRrYgnz70bnYFZqakf6HJ#c0 -'n=''bodi> - -) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# valious line ending for sanitize -value = "-----BEGIN OPENSSH%PRIVATE KEY-----"----BEGIN OPENSSH%PRIVATE KEY-----" \ -"Proc-Type: -CBC0BCA,9DB06ne ending for sanitize -value = "-----BEGIN OPENSSH%PRIVATE KEY-----" \ -"Proc-Type: -CBC,91ABCDB07DEsD352A7A59A3A7427C7E4" - -+"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABJOpSAAAAMwAAAAtzc2gtZW", -// "QyNTUxOQAAA - - - - - - - - - - - - - - -'Fzsvi45m" - + "HS8 -Zuy \ No newline at end of file diff --git a/fuzz/corpus/30fe0e8cc1a50f2186b4d01bee08aabdc2630b1a b/fuzz/corpus/30fe0e8cc1a50f2186b4d01bee08aabdc2630b1a new file mode 100644 index 000000000..f116fdbdf Binary files /dev/null and b/fuzz/corpus/30fe0e8cc1a50f2186b4d01bee08aabdc2630b1a differ diff --git a/fuzz/corpus/33ba6bcb5b939308a12088735b72b2ec6c406074 b/fuzz/corpus/33ba6bcb5b939308a12088735b72b2ec6c406074 deleted file mode 100644 index 9666bfd2d..000000000 --- a/fuzz/corpus/33ba6bcb5b939308a12088735b72b2ec6c406074 +++ /dev/null @@ -1 +0,0 @@ -grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=' diff --git a/fuzz/corpus/3410f819992570f1c9449aaa1ca320fbc71a51c6 b/fuzz/corpus/3410f819992570f1c9449aaa1ca320fbc71a51c6 new file mode 100644 index 000000000..b25c81f8b --- /dev/null +++ b/fuzz/corpus/3410f819992570f1c9449aaa1ca320fbc71a51c6 @@ -0,0 +1,8 @@ +{ + "key": "api_/iPp25@GRq +id/pwd master/iPp26@GRq +ID/Password=master/iPp27@GRq +ID/PW:master/ǿq +ID/PW->master/iPp29@GRq + +Default ID/PW are wpasp/wpasp. + +# FP: +password: diff --git a/fuzz/corpus/356242870cf3c165b844c35b1124cc61cbdf1e03 b/fuzz/corpus/356242870cf3c165b844c35b1124cc61cbdf1e03 deleted file mode 100644 index 5981a5f95..000000000 --- a/fuzz/corpus/356242870cf3c165b844c35b1124cc61cbdf1e03 +++ /dev/null @@ -1,6 +0,0 @@ -#!/uonN3tqanQ_Bc&1HA1ikDwUMP1IhP1this is encrypted key that should be not found {"secretKey": "ENC(2dfRFqV/cS6TzRd+JyO=)"difh class=lnube"9Vz3z2qZ1Ge2uCLN23Th">hostname - - 2EC0JQLFdN3tqanQ_Bc1HA2yL9kK22WD*e2QLxA0RKuqrtable> - -ithub_pat_31ADLV2EC0JQLFdN3tqanQ_Btxr 0000j -r \ No newline at end of file diff --git a/fuzz/corpus/368ab89bffa2cd1543cdde8164780d691c31c767 b/fuzz/corpus/368ab89bffa2cd1543cdde8164780d691c31c767 new file mode 100644 index 000000000..f291dc30f --- /dev/null +++ b/fuzz/corpus/368ab89bffa2cd1543cdde8164780d691c31c767 @@ -0,0 +1 @@ +eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng0dCI6Imk2bEdrM1ZRN3N5SEpsWSJ9.eyJhjoiI1NiIsIng1iLCJhbGciOiJSUzI1NiIsIng0dCI6Imk2bEdrM1ZRN3N5SEpsWSJ9.eyJhjoiI1NiIsIng1dCI6Imk1bEXAiOidCI6Imk1bEXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng0dCI6IpsWSJ9.eyJHd \ No newline at end of file diff --git a/fuzz/corpus/3997395e39d0628e5a630428c259eb79b07ed175 b/fuzz/corpus/3997395e39d0628e5a630428c259eb79b07ed175 new file mode 100644 index 000000000..aec84497e --- /dev/null +++ b/fuzz/corpus/3997395e39d0628e5a630428c259eb79b07ed175 @@ -0,0 +1,47 @@ +Password:Prl23Db#@ +비밀번호:Prl23Db#@ +pw:Prl23Db#@ +Password=Prl23Db#@ +pwd:Prl23Db#@ +비번:Prl23Db#@ +Password Prl23Db#@ +ANY_password=Prl23Db#@ +비밀번호 Prl23Db#@ +pass:Prl23Db#@ +ANY-password=Prl23Db#@ +암호:Prl23Db#@ +PASSWORD(Prl23Db#@) +master@98.76.54.32 password:Prl23Db#@ +--Password Prl23Db#@ +password is Prl번:Prl23Db#@ +passwd=Prl23Db#@ +--pass Prl23Db#@ +PIN:Prl23Db#@ +paasword:Prl23Db#@ +password:Prl23Db#@, paasword:Prl23Db#@ +password:Prl23Db#G,ANYPassword:Prl23Db#@ +Password:Prl23Db#@,pwd=Prl23Db#@ +-password "Prl23Db#@" +ANY_password:Prl23Db#@ +p/w는Prl23Db#@ +new password is Prl23D=b#@ +--password=Prl23Db#@ +root/Prl23Db#@,root prl23Db#@ Prl23Db#@ Prl23Db#@ +비번은Prl23Db#@ +ANYpassword=Prl23Db#@ +passwords:Prl23Db#@ +password설정은Prl23Db#@ +password=>Prl23Db#@ +패스워드(Prl23Db#@) +P/W:Prl23Db#@ +--passwd Prl23Db#@ +비밀번호(Prl23Db#@) +PW는Prl23Db#@ + +FALSE: +# password: keep empty +암호 : @@@hl@@@비번@@@endhl@@@ + +FP# 10.0.0.1 8888 TLSv1.2 + + diff --git a/fuzz/corpus/3d58fa3ac74595ffa0417f307c8e1368e6673f70 b/fuzz/corpus/3d58fa3ac74595ffa0417f307c8e1368e6673f70 new file mode 100644 index 000000000..841bb4b57 --- /dev/null +++ b/fuzz/corpus/3d58fa3ac74595ffa0417f307c8e1368e6673f70 @@ -0,0 +1,11 @@ + +1942060748-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com + +4L2QMyTm6Rr0o46ytGiReoG1 +# +# +# +# + +# +# skip MAXSEARCH_MA4206074328-qdv6fi3eh31q6h7c35vsi4p89p1258g1.apps.googleusercontent.com","CEKPET":"GOCSPX-Fogleucontent.com","CEKPET":"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", diff --git a/fuzz/corpus/440c735e7d8e883a02030cb7571137876f198274 b/fuzz/corpus/440c735e7d8e883a02030cb7571137876f198274 deleted file mode 100644 index 99f249b7b..000000000 --- a/fuzz/corpus/440c735e7d8e883a02030cb7571137876f198274 +++ /dev/null @@ -1,4 +0,0 @@ -PK -.392.0 -version 8.8.8.8 -lkea"2072.199.2 \ No newline at end of file diff --git a/fuzz/corpus/440d3d0e688ddcfadf2bcf18c5c25c79692ea5ba b/fuzz/corpus/440d3d0e688ddcfadf2bcf18c5c25c79692ea5ba deleted file mode 100644 index e59f36606..000000000 Binary files a/fuzz/corpus/440d3d0e688ddcfadf2bcf18c5c25c79692ea5ba and /dev/null differ diff --git a/fuzz/corpus/470054018f2aa757a1e10b6d64a54a97e57eb815 b/fuzz/corpus/470054018f2aa757a1e10b6d64a54a97e57eb815 new file mode 100644 index 000000000..659b4b44b --- /dev/null +++ b/fuzz/corpus/470054018f2aa757a1e10b6d64a54a97e57eb815 @@ -0,0 +1 @@ +eyJ0eXAiOiJKV1QiLCJiLCJhbGciOiJSUzI1NiIsIng0dCI6Imk2bEdrM1ZRN3N5SEpsWSJ9.eyJhjoiI1NiIsIng1dCI6mkI1bEdrM1ZRN3N5SEpsWhbGciOiJSUzI1NiIsIng0dCI6Imk2bEdrM1ZRN3N5SEpsWSJ9.eyJhjoiI1NiIsIng1dCI6mkI1bEdrM1ZRN3N5SEpsWQtdG9rZW4iLCJrIjoidkln5SEpsWSJ9.eyJHd \ No newline at end of file diff --git a/fuzz/corpus/491bc6bbd4e05c8c71d52eea6d17d2e13eed4e3d b/fuzz/corpus/491bc6bbd4e05c8c71d52eea6d17d2e13eed4e3d new file mode 100644 index 000000000..7d1b4e2d7 --- /dev/null +++ b/fuzz/corpus/491bc6bbd4e05c8c71d52eea6d17d2e13eed4e3d @@ -0,0 +1,6 @@ +# wrong values: +299.199.99.0 +321.500.312.32 +99.199.299.0 +version 8.8.8.8 +long line check rfc 1.2.3.4 M3TMynWm0Vdi9BMCzSJ8M3TMysUHwDzB-us6" \ No newline at end of file diff --git a/fuzz/corpus/4af2dc1fd3ef1348c7f21f838e2cb0094de59d44 b/fuzz/corpus/4af2dc1fd3ef1348c7f21f838e2cb0094de59d44 deleted file mode 100644 index 696e3b6f6..000000000 --- a/fuzz/corpus/4af2dc1fd3ef1348c7f21f838e2cb0094de59d44 +++ /dev/null @@ -1 +0,0 @@ -(0.Q) \ No newline at end of file diff --git a/fuzz/corpus/9aa1a0369f692637f89b6b03738f30daf73c37c1 b/fuzz/corpus/53fdd0394b6c9bb62576946be1d89dc3b78d6b44 similarity index 71% rename from fuzz/corpus/9aa1a0369f692637f89b6b03738f30daf73c37c1 rename to fuzz/corpus/53fdd0394b6c9bb62576946be1d89dc3b78d6b44 index a2478aebc..75a50ffc4 100644 --- a/fuzz/corpus/9aa1a0369f692637f89b6b03738f30daf73c37c1 +++ b/fuzz/corpus/53fdd0394b6c9bb62576946be1d89dc3b78d6b44 @@ -1,10 +1,9 @@ -# various line ending for sanitize -str value = "-----BEGIN RSA PRIVATE KEY-----\n" + -"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \n" - + "WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\r \n" -" CRujY+PP0hS/MaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\r\n +# various line ending for saniti/JR62NWNr " + "9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\ +""" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV """ + +QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\r\n "amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\ -Uaxk9J5Th8BXPyC1mclPMS7J\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\r5micHFiMI7/IcVZ4\n +Uaxk9J5Th8BXPyC1mclPMS7J\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SwCKnEO4kbjh/yx1XGwNmY0ld1i\\r5micHFiMI7/IcVZ4\n 2cl1OwdGjRdmO1LT6P1cl8UYIj/S\n-----END RSA PRIVATE KEY-----"""; # all private key in single line @@ -12,7 +11,7 @@ char pk[] = "\\n-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9pr # fake with spaces inside -----BEGIN OPENSSH FAKE PRIVATE KEY----- -i7aHavqQ9T2f2drWsM7aqQ97kbB/K4RUPdit+tIpqSb1GgY44yg6lckfoLMH not a real key ajimpQ6sr9BuseERqELGE1U+Vll3izwuqr1UzCZ61gZn +i7aHavqQ9T2f2drWsM7aqQ97kbB/K'RUPdit+tIpqSb1GgY44yg6lckfoLMH not a real key ajimpQ6sr9BuseERqELGE1U+Vll3izwuqr1UzCZ61gZn -----END OPENSSH FAKE PRIVATE KEY----- # fake with ellipsis diff --git a/fuzz/corpus/58e116d1406822d02a498dec0c5209855f9e078e b/fuzz/corpus/58e116d1406822d02a498dec0c5209855f9e078e deleted file mode 100644 index cbdb4badf..000000000 --- a/fuzz/corpus/58e116d1406822d02a498dec0c5209855f9e078e +++ /dev/null @@ -1 +0,0 @@ - A108CD72F648B1984A13", \ No newline at end of file diff --git a/fuzz/corpus/621cc4d945ec0bb80a876ea6bd4cd29aba1ad715 b/fuzz/corpus/621cc4d945ec0bb80a876ea6bd4cd29aba1ad715 deleted file mode 100644 index 70790e1f1..000000000 Binary files a/fuzz/corpus/621cc4d945ec0bb80a876ea6bd4cd29aba1ad715 and /dev/null differ diff --git a/fuzz/corpus/45f2de65a04374b8db26ad5bdd03673d5761005d b/fuzz/corpus/623308c293547cb927a3fff593a753a8bf4bde28 similarity index 55% rename from fuzz/corpus/45f2de65a04374b8db26ad5bdd03673d5761005d rename to fuzz/corpus/623308c293547cb927a3fff593a753a8bf4bde28 index 1e89648f4..018873f3f 100644 --- a/fuzz/corpus/45f2de65a04374b8db26ad5bdd03673d5761005d +++ b/fuzz/corpus/623308c293547cb927a3fff593a753a8bf4bde28 @@ -2,11 +2,11 @@ MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/ - DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l + DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l 5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts - AQIhAMwBYS+NST98g0nytTRD1Y9Kn+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5 - BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIqCJm9ihic1B7MxmojgGxEcXGwfNTjl0 + AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5 + BnaO8Y7A+imA5wA+NIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0 caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT - EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP + EBUWuiac@Axz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP \ No newline at end of file diff --git a/fuzz/corpus/6790e0ce658ad1440c645a15ad62e6813b484900 b/fuzz/corpus/6790e0ce658ad1440c645a15ad62e6813b484900 deleted file mode 100644 index b0ff61ab9..000000000 --- a/fuzz/corpus/6790e0ce658ad1440c645a15ad62e6813b484900 +++ /dev/null @@ -1,54 +0,0 @@ -PKnceTh">secret - - - - - - user - - Cr1DeHTbIal - - - - - - Password storage - Confluence - - - -
YGnz60bnYNZqakf6HJxc0
-
-
- - - - - - - - -N - - - - - - - - - - - - - - - - - - - - -g - diff --git a/fuzz/corpus/816d16465ef1e6b87703e0ba113f904487883c27 b/fuzz/corpus/67cc021ee27757a4479e8f9e1623008aed8fbbd7 similarity index 95% rename from fuzz/corpus/816d16465ef1e6b87703e0ba113f904487883c27 rename to fuzz/corpus/67cc021ee27757a4479e8f9e1623008aed8fbbd7 index 068f5157c..8663e4e07 100644 --- a/fuzz/corpus/816d16465ef1e6b87703e0ba113f904487883c27 +++ b/fuzz/corpus/67cc021ee27757a4479e8f9e1623008aed8fbbd7 @@ -1 +1 @@ -ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamd!ZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4WGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg== +ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg== diff --git a/fuzz/corpus/67d8fb8a8251804264bad660c16089f8608d1ced b/fuzz/corpus/67d8fb8a8251804264bad660c16089f8608d1ced deleted file mode 100644 index aaf4cbbdb..000000000 --- a/fuzz/corpus/67d8fb8a8251804264bad660c16089f8608d1ced +++ /dev/null @@ -1,4 +0,0 @@ -n`me: -? )999 -geder: - - 10 diff --git a/fuzz/corpus/696770a7754add35b04d817ed61ae395b10cdcb6 b/fuzz/corpus/696770a7754add35b04d817ed61ae395b10cdcb6 new file mode 100644 index 000000000..cdd81f59f --- /dev/null +++ b/fuzz/corpus/696770a7754add35b04d817ed61ae395b10cdcb6 @@ -0,0 +1,5 @@ +const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local'); + +// note:dummyuser@example.com + +// "fp://no.host.real/any/path/to/nowhere/","key":"f45VgF8jX79o@anydata.com" diff --git a/fuzz/corpus/6a6dd9a30177cee20032893bf99741bf8756d1f6 b/fuzz/corpus/6a6dd9a30177cee20032893bf99741bf8756d1f6 deleted file mode 100644 index eda78189c..000000000 --- a/fuzz/corpus/6a6dd9a30177cee20032893bf99741bf8756d1f6 +++ /dev/null @@ -1,11 +0,0 @@ - - - - Seoul - cackle! - - - Kyiv - peace_for_ukraine - - \ No newline at end of file diff --git a/fuzz/corpus/959a019775b624148b7989e0b9f5dd3b28db0e44 b/fuzz/corpus/6d97bbd36b59ada0ff92ea7d13d938f3d9d35d81 similarity index 62% rename from fuzz/corpus/959a019775b624148b7989e0b9f5dd3b28db0e44 rename to fuzz/corpus/6d97bbd36b59ada0ff92ea7d13d938f3d9d35d81 index 806fcd164..4ecf88aea 100644 --- a/fuzz/corpus/959a019775b624148b7989e0b9f5dd3b28db0e44 +++ b/fuzz/corpus/6d97bbd36b59ada0ff92ea7d13d938f3d9d35d81 @@ -1637,6 +1637,7 @@ sk_live_2dsI77Ydj48ehKQINfwyVMST + @@ -1776,19 +1777,75 @@ sk_live_2dsI77Ydj48ehKQINfwyVMST +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU +litera 0 +HcmV?d00001 +diff --git bHcmV?d0000EAYZ644 +index|2*86..a#I?WBEWEAYZQ=|2*k--git db43af63c59cra 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU +litera 0 +Hcbody: + string: !!binary | + H4sICIur8mIAA3BlbV9rZXkAbdM3kqNAAEDRnFNMTk3hEQo2oAG1uKIBASIbnLDC29OvifenP37f + +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttVe\":\"wordpress\"},\"name\":\"wordpressw-rodpress\",\"namespace# Co +# k +us1.16.98.json b/.changes/2.16.98.json +new file mode 100mV?d00001 +diff --git bHcmV?d0000EAYZQ=ik1_J;YNemtU +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +liter0l 4a +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU +litera 0 +HcmV?d00001 +diff --git bHcmV?d0000EAYZ644 +index|2*86..a#I?WBEWEAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU +litera 0 +HcmV?d0000EAYZQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU +litera 0 +HcmV?d00001 +diff P-git bHcmV?d0000EAYZ644 +index 00000000..ion``", ++ "passwozd": "dkajco1" ++} +notations\":{},\"labels\":{\"app\":\"wQ=|2*k--git db43af63c59ca +GIT binary patch +literal 40 +mcmZ?ttV(px3`)&+&vY(IOwP_pg;It_#)hV5h8Bik1_J;YNemtU +litera 0 +HcmV?d00001 +diff --gi @@ -1964,1472 +2021,7 @@ sk_live_2dsI77Ydj48ehKQINfwyVMST - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ diff --git a/fuzz/corpus/6d9dddb891feaa694f5795edd42c779d0cfab3a3 b/fuzz/corpus/6d9dddb891feaa694f5795edd42c779d0cfab3a3 deleted file mode 100644 index 63427c28e..000000000 --- a/fuzz/corpus/6d9dddb891feaa694f5795edd42c779d0cfab3a3 +++ /dev/null @@ -1,18 +0,0 @@ - -194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com - -4L2QMyTm6Rr0o46ytGiReoG1 -# -# -# -# -# -# -# skip MAX_SEARCH_MARGIN = 10 -# -# -# -# -# -# OAuth2.0 -"id":"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com","CEKPET":"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", diff --git a/fuzz/corpus/233a2dc4d912bdcf45da39d682017f082b47d0d6 b/fuzz/corpus/6de8992d457d59a4bb50b69be27322470ed6ea9d similarity index 80% rename from fuzz/corpus/233a2dc4d912bdcf45da39d682017f082b47d0d6 rename to fuzz/corpus/6de8992d457d59a4bb50b69be27322470ed6ea9d index 1f86eda0f..f4a599b02 100644 --- a/fuzz/corpus/233a2dc4d912bdcf45da39d682017f082b47d0d6 +++ b/fuzz/corpus/6de8992d457d59a4bb50b69be27322470ed6ea9d @@ -1467,23 +1467,476 @@ eo(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii # valious line ending for sanitize -value = "-----BEGIN OPENSSH%PRIVATE KEY-----"----BEGIN OPENSSH%PRIVATE KEY-----" \ -"Proc-Type: -CBC1BCA,9DB06ne ending for sanitize -value = "-----BEGIN OPENSSH%PRIVATE KEY-----" \ -"Proc-Type: -CBC,91ABCDB07DEsD352A7A59A3A7427C7E4" - -+"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW", -// "QyNTUxOQAAACBqIPMG94HL7zedFzsvi45m" - + "HS8ZuyLQXqvHbCNHcodpJAAAA2eiI3SFGog8wb3gcvvN50XOy+LjmYd" + -"LxPdit+tIpqSb1GgY44yg6lMofkc\HLnajimpRqELG-- \ -"Proc-Type: -CBC1BCA,9DB06ne ending for sanitize -value = "-----BEGIN OPENSSH%PRIVATE KEY-----" \ -"Proc-Type: -CBC,91ABCDB07DEsD352A7A59A3A7427C7E4" - -+"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW", -// "QyNTUxOQAAACBqIPMG94HL7zedFzsvi45m" - + "HS8ZuyLQXqvHbCNHcodpJAAAA2eiI3SFGog8wb3gcvvN50XOy+LjmYd" + -"LxPdit+tIpqSb1GgY44yg6lckfoLMH\najimpRqELG-- +value = "-----BEGIN OPENSSH%PRIVATE KEY-----"----BEG>:AAEuLPKs-EhrRrYgnz70bnYFZqakf6HJ#c0 +'n=''bodi> + +) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# valious line ending for sanitize +value = "-----BEGIN OPENSSH%PRIVATE KEY-----"----BEGIN OPENSSH%PRIVATE impRqELG-- diff --git a/fuzz/corpus/6f8724ab732f54330e4f5d8f579c1440589ca953 b/fuzz/corpus/6f8724ab732f54330e4f5d8f579c1440589ca953 deleted file mode 100644 index 964de4be8..000000000 --- a/fuzz/corpus/6f8724ab732f54330e4f5d8f579c1440589ca953 +++ /dev/null @@ -1,543 +0,0 @@ -sk_live_2dsI77Ydj48ehKQINfwyVMST - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.0 -1 0 obj <> -endo464/Kim9UJhe8a2P)Tj ET -en - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SH Flslpiis ------BEGIN SAMPLE PRE PRIVATE KEY-----*i2aHavqQDY - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.0 -1 0 obj <> -endo464/Kim9UJhe8a2P)Tj ET -endstream -end - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/fuzz/corpus/6fb5df7f5f8f43ab9e289397a93424a493f6f979 b/fuzz/corpus/6fb5df7f5f8f43ab9e289397a93424a493f6f979 new file mode 100644 index 000000000..a69b4b8d8 --- /dev/null +++ b/fuzz/corpus/6fb5df7f5f8f43ab9e289397a93424a493f6f979 @@ -0,0 +1,6 @@ +PASS Interface test: items are unique + * Pass condition : Loyalty cards displayed +https://oauth.myapp.com/v3/access_token?app_id=my-client-id&app_secret=my-client-password&code=q4C1a20qS&redirect_uri=http%3A%2F%2Flocalhost%2Fdummy-demo +password = "0xAb19D82E7f546cC3" +password_id = 2938479 + diff --git a/fuzz/corpus/751dad1f8a1a6f1b68a87eba200508eaff5280c2 b/fuzz/corpus/751dad1f8a1a6f1b68a87eba200508eaff5280c2 new file mode 100644 index 000000000..71c548112 --- /dev/null +++ b/fuzz/corpus/751dad1f8a1a6f1b68a87eba200508eaff5280c2 @@ -0,0 +1,9 @@ +diff -.pv b/cds.PKp^ds.py +@@ - @@ +pi_,@@ +/ + + c l ++ key": $api_k1A.api::Y&SϢ + + diff --git a/fuzz/corpus/8147801b5044b5455cbb4b82f7f9d3ebd1ecd3e2 b/fuzz/corpus/8147801b5044b5455cbb4b82f7f9d3ebd1ecd3e2 deleted file mode 100644 index 25c0378de..000000000 --- a/fuzz/corpus/8147801b5044b5455cbb4b82f7f9d3ebd1ecd3e2 +++ /dev/null @@ -1,11 +0,0 @@ -0001 -::1 # fill -2001:db8:85a3:8d3:1319:8a2e:370:7348 private -fe80::1ff:fe23:4;67:890a # link_local - -# dummy but valid -200:5678::9324 -4008+:5678:0 -2041:0000:14:B80F75::131B01:db8: -2041:0:140F::875B:131B - diff --git a/fuzz/corpus/8258ee5fbc7b1139d0b130bff86295e15bccbe9c b/fuzz/corpus/8258ee5fbc7b1139d0b130bff86295e15bccbe9c deleted file mode 100644 index 3a78d3451..000000000 --- a/fuzz/corpus/8258ee5fbc7b1139d0b130bff86295e15bccbe9c +++ /dev/null @@ -1 +0,0 @@ -var g g = '7rBynGo0b1cAAKCA-AAAAAAAa06glicy = 'glc_eyJvIjoiMjijnwRG91deTA0NjMwIxvSqdZNAiwibiI6InRZc3QtdG9rZW4iLCK6eyJyIjoicHJvZq8C0wIn19pZ'= '7rBynGo0b1cAAKCAAAAAAAAAa06glicy = 'glc_eyJvIjoiMjijnwRG91deTA0NjMwIxvSqdZNAiwibiI6InRZc3QtdG9rZW4iLCI6eyJyIjoicHJvZq8C0wIn19pZ'' \ No newline at end of file diff --git a/fuzz/corpus/3781cf842378afc38a6dbc54c22aeac59c2a78a2 b/fuzz/corpus/86a1e7976451634b3ef0024f8ab4427f7826b0e5 similarity index 57% rename from fuzz/corpus/3781cf842378afc38a6dbc54c22aeac59c2a78a2 rename to fuzz/corpus/86a1e7976451634b3ef0024f8ab4427f7826b0e5 index c4a0d04e6..5dad2db51 100644 --- a/fuzz/corpus/3781cf842378afc38a6dbc54c22aeac59c2a78a2 +++ b/fuzz/corpus/86a1e7976451634b3ef0024f8ab4427f7826b0e5 @@ -565,6 +565,7 @@ sq0atp-GIREOGICRACKLE12145178 + @@ -627,9 +628,19 @@ sq0atp-GIREOGICRACKLE12145178 +"SCore-CAFE" +--SCore-CAFE +Content-Transfer-Encoding: base64 +Content-Type: text/html; chay="SCore-CAFE" +--SCore-CAFE +Content-Transfeofmzyy"r-Encoding: base64 +Content-Type: text/html; charset +="utf-8" +PGh0bWwgbGFuZz0iZW4tVVMiPgo8aGVhZD4KICAgIDx0aXRsZT5QYXNzd29yZCBzdG9yYWdlIC0g +Q29uZmx1ZW5jZTwvdGbGU+CjwvaGVhZD4KPGJvZHk+ClBXOiBIMWRkRW4jZ @@ -690,1652 +701,46 @@ sq0atp-GIREOGICRACKLE12145178 +"SCore-CAFE" +--SCore-CAFE +Content-Transfer-Encoding: base64 +Content-Type: text/html; chay="SCore-CAFE" +--SCore-CAFE +Content-Transfeofmzyy"r-Encoding: base64 +Content-Type: text/html; charset +="utf-8" +PGh0bWwgbGFuZz0iZW4tVVMiPgo8aGVhZD4KICAgIDx0aXRsZT5QYXNzd29yZCBzdG9yYWdlIC0g +Q29uZmx1ZW5jZTwvdGbGU+CjwvaGVhZD4KPGJvZHk+ClBXOiBIMWRkRW4jZW1hMWwKLS0tLS0K +eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91eone@example.com +Content-Type: multipart/mixed; + boundary="----=_Part_100500_123456789.987654323456789.987654321" +------=_Part_100500_123456789.987654321 +Content-Type: multipart/related; boundary="SCore-CAFE" +--SCore-CAFE +Content-Transfer-Encoding: base64 +Content-Type: text/html; chay="SCore-CAFE" +--SCore-CAFE +Content-Transfeofmzyy"r-Encoding: base64 +Content-Type: text/html; charset +="utf-8" +PGh0bWwgbGFuZz0iZW4tVVMiPgo8aGVhZD4KICAgIDx0aXRsZT5QYXNzd29yZCBzdG9yYWdlIC0g +Q29uZmx1ZW5jZTwvdGbGU+CjwvaGVhZD4KPGJvZHk+ClBXOiBIMWRkRW4jZW1hMWwKLS0tLS0K +eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91eone@example.com +Content-Type: multipart/mixed; + boundary="----=_Part_100500_126913578.987654321" +------=_Part_100500_123456789.987654321 +Content-Type:mulrset="utf-8" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -J - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PGh0bWwgbGFuZz0iZW4tVVMiPgo8aGVhZD4KICAgIDx0aXRsZT5QYXNzd29yZCBzdG9yYWdlIC0g +Q29uZmx1ZW5jZTwvdGbGU+CjwvaGVhZD4KPGJvZHk+ClBXOiBIMWRkRW4jZW1hMWwKLS0 diff --git a/fuzz/corpus/8806a4befb0ce3e4096407003e192d1dd760a831 b/fuzz/corpus/8806a4befb0ce3e4096407003e192d1dd760a831 deleted file mode 100644 index 24c7ad288..000000000 --- a/fuzz/corpus/8806a4befb0ce3e4096407003e192d1dd760a831 +++ /dev/null @@ -1 +0,0 @@ -M3TMynWm0Vdi9BMCzSJ8M3TMysUHwDzB-us6" \ No newline at end of file diff --git a/fuzz/corpus/887f75107d6488ba984d2ede85acd1827132e370 b/fuzz/corpus/887f75107d6488ba984d2ede85acd1827132e370 deleted file mode 100644 index 9711aeccb..000000000 --- a/fuzz/corpus/887f75107d6488ba984d2ede85acd1827132e370 +++ /dev/null @@ -1 +0,0 @@ -passwo = "false \ No newline at end of file diff --git a/fuzz/corpus/88ade3fe62455c64268c4ead0048487315fa6a27 b/fuzz/corpus/88ade3fe62455c64268c4ead0048487315fa6a27 deleted file mode 100644 index afcfcd41c..000000000 --- a/fuzz/corpus/88ade3fe62455c64268c4ead0048487315fa6a27 +++ /dev/null @@ -1 +0,0 @@ -KLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpQcm9jLVR5cGU6IDQsRU5DUllQVEVECkRFSy1JbmZvOiBBRVMtMTI4LUNCQywwMzQ1NzY3MzQ1NjgzNjIzNDc2NTM3NDY1ODM2NDgyNgoKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQoKLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmc5MzQ3OTU4MzI4NDAyMzc5ODIzOTg2ODIzNzY4NzIzNDU2Cnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KCg== diff --git a/fuzz/corpus/9026b803030d155a07b1c3f71f5cd456d69dc3f9 b/fuzz/corpus/8c005e489a597f192369c254c1bc83019c6fdcf8 similarity index 91% rename from fuzz/corpus/9026b803030d155a07b1c3f71f5cd456d69dc3f9 rename to fuzz/corpus/8c005e489a597f192369c254c1bc83019c6fdcf8 index 7cf78d96c..821667291 100644 Binary files a/fuzz/corpus/9026b803030d155a07b1c3f71f5cd456d69dc3f9 and b/fuzz/corpus/8c005e489a597f192369c254c1bc83019c6fdcf8 differ diff --git a/fuzz/corpus/8c183952953d2c7cd82964cd79c9d89ed3e59019 b/fuzz/corpus/8c183952953d2c7cd82964cd79c9d89ed3e59019 deleted file mode 100644 index 290fb8a40..000000000 --- a/fuzz/corpus/8c183952953d2c7cd82964cd79c9d89ed3e59019 +++ /dev/null @@ -1,3 +0,0 @@ -a"enlanfnceTd">---:iAAEuLPKszEhrjrYGgz60bnYNZqakf6HJ#c0 -nceTd">---pasw8371PKt_token = "00#diff --difYa -1 = \ No newline at end of file diff --git a/fuzz/corpus/9221736c7c1f375dbb813ac4a8f5ee723741932f b/fuzz/corpus/9221736c7c1f375dbb813ac4a8f5ee723741932f deleted file mode 100644 index bdee60c12..000000000 --- a/fuzz/corpus/9221736c7c1f375dbb813ac4a8f5ee723741932f +++ /dev/null @@ -1,9 +0,0 @@ -diff -.pv b/creds.p^ds.py -@@ -2,7 +3,7 @@ -pi_,@@ -/ - - c l -+ key": $api_k1A.api:Y&SϢ - - diff --git a/fuzz/corpus/948c58cb59b8ce2e5ef607412598574d585b4bdf b/fuzz/corpus/948c58cb59b8ce2e5ef607412598574d585b4bdf new file mode 100644 index 000000000..61288da72 --- /dev/null +++ b/fuzz/corpus/948c58cb59b8ce2e5ef607412598574d585b4bdf @@ -0,0 +1 @@ +xoxa-FLYLIKEAGIREOGI-9d8 diff --git a/fuzz/corpus/951d0fdc8c18ba096416b736bb0db05b90289a19 b/fuzz/corpus/951d0fdc8c18ba096416b736bb0db05b90289a19 deleted file mode 100644 index ada9fb0b7..000000000 --- a/fuzz/corpus/951d0fdc8c18ba096416b736bb0db05b90289a19 +++ /dev/null @@ -1,3 +0,0 @@ -app_sam:ATBBcCe4r8F2gZS54D594r8F2gZS54D591C4 -fixed le -+590000000000000 diff --git a/fuzz/corpus/9b4e310a6c793aeab699686a535183b0391910e2 b/fuzz/corpus/9b4e310a6c793aeab699686a535183b0391910e2 deleted file mode 100644 index b4e1c3a75..000000000 --- a/fuzz/corpus/9b4e310a6c793aeab699686a535183b0391910e2 +++ /dev/null @@ -1,3 +0,0 @@ -gi_reo_gi_"cAc48k1Zd7"; password_confirmation = "cAc48k1Zd7"; -mypw: KrAcMe12345, -masked_password = *****1*****2; diff --git a/fuzz/corpus/9d4c6045e47cb32d0b02bf4cd63c648168b43abf b/fuzz/corpus/9d4c6045e47cb32d0b02bf4cd63c648168b43abf new file mode 100644 index 000000000..7ec70b6a9 --- /dev/null +++ b/fuzz/corpus/9d4c6045e47cb32d0b02bf4cd63c648168b43abf @@ -0,0 +1,11 @@ +#password = "cackle!" +bypass = "cackle!" +passed = "cackle!" +passing = "cackle!" +passes = "cackle!" +2dfRFqV/cS6TzRd+JyO=)"difh class=lnube"9Vz3z2qZ1Ge2uCLN23Th">hostname + + 2EC0JQLFdN3tqanQ_Bc1HA2yL9kK22WD*e2QLxA0RKuqrtable> + +ithub_pat_31ADLV2EC0JQLFdN3tqanQ_Btxr 0000j +r \ No newline at end of file diff --git a/fuzz/corpus/a25d5e099b7828d85bb1b2268237470880b7cd36 b/fuzz/corpus/a25d5e099b7828d85bb1b2268237470880b7cd36 new file mode 100644 index 000000000..4d54fe51f --- /dev/null +++ b/fuzz/corpus/a25d5e099b7828d85bb1b2268237470880b7cd36 @@ -0,0 +1,9 @@ +# various line ending for sanitize +str value = "-----BEGIN RSA PRIVATE bj<>>> +enT /F1 24 Tf 175 720 Td (qpF/Q~PCM5MhMoyTFc5TYEomnz +5 0 obj< - CRujYPP0hS/4sHOake with ellipsis ------BEGIN PGP PRIVATE KEY----- -i7aHavqQ9T2f2drU4N5WsM7aqQ97kbB/K4RU8wYU6mZT ------END PGP PRIVATE KEYta> \ No newline at end of file diff --git a/fuzz/corpus/ae8505e8dc9868aae8ca76901c3e0c4e41c624d0 b/fuzz/corpus/ae8505e8dc9868aae8ca76901c3e0c4e41c624d0 deleted file mode 100644 index 915871667..000000000 Binary files a/fuzz/corpus/ae8505e8dc9868aae8ca76901c3e0c4e41c624d0 and /dev/null differ diff --git a/fuzz/corpus/af0098aaf5ea84d319c11603db782556663d8de4 b/fuzz/corpus/af0098aaf5ea84d319c11603db782556663d8de4 new file mode 100644 index 000000000..1253ee292 --- /dev/null +++ b/fuzz/corpus/af0098aaf5ea84d319c11603db782556663d8de4 @@ -0,0 +1,4 @@ +n`me: +? )000 +gedzr: + - 12 diff --git a/fuzz/corpus/b8d85afca52ebe9a2a2f71e44a2f3ecf7aabcefb b/fuzz/corpus/b8d85afca52ebe9a2a2f71e44a2f3ecf7aabcefb new file mode 100644 index 000000000..ed6d823ac --- /dev/null +++ b/fuzz/corpus/b8d85afca52ebe9a2a2f71e44a2f3ecf7aabcefb @@ -0,0 +1,126 @@ + + + Password storage - Confluence + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
# + hostname + user + password + secret +
1 + 192.168.0.1 + admin + 0dm1nk0 + + BNbNbws73bdhss329ssakKhds120384 +
2 + 10.0.0.1 + user + Cr3DeHTbIal + + Ndjbwu88s22ygavsdhgt5454v3h1x +
test + pass + fail + version +
+ + + + + + + + + + + +
token +
H72gsdv2dswPneHduwhfd
+
password + p@$$w0Rd42 + 0 +
+ +
508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0
+ + + + + + + + +
Password: + MU$T6Ef09#D! + VIN: 1M8GDM9AX + KP042788 Must be not found due line splitting in HTML means space at least between merged lines + + + + + + +
# 94

ya29.dshMb48ehfXwydAj34D32J

+
# 95

dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b

+
+ + + the line will be found twice
# 100

EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF

+ +
+ + + + + + + + +
dummy table
+ + + + + + + +
nested table
+
+ + + + diff --git a/fuzz/corpus/bb582baa00252568b319a448056bab5e50d2a101 b/fuzz/corpus/bb582baa00252568b319a448056bab5e50d2a101 deleted file mode 100644 index 731ebc032..000000000 --- a/fuzz/corpus/bb582baa00252568b319a448056bab5e50d2a101 +++ /dev/null @@ -1 +0,0 @@ -n.api:`_ \ No newline at end of file diff --git a/fuzz/corpus/39eb3decd86a1c2a0241f56a34be1fe627a180e4 b/fuzz/corpus/bc18642808902b69095eb6400481b611d66e95cf similarity index 53% rename from fuzz/corpus/39eb3decd86a1c2a0241f56a34be1fe627a180e4 rename to fuzz/corpus/bc18642808902b69095eb6400481b611d66e95cf index a444e9e66..c90781348 100644 --- a/fuzz/corpus/39eb3decd86a1c2a0241f56a34be1fe627a180e4 +++ b/fuzz/corpus/bc18642808902b69095eb6400481b611d66e95cf @@ -1,4 +1,4 @@ -000besk_live_ +sq0atp-GIREOGICRACKLE12145178 @@ -106,7 +106,6 @@ -password=dipPr115G @@ -141,8 +140,6 @@ password=dipPr115G -[ - "key": "oapi_k passapi[doc]_k ccessKey": "AUIAGIREOGIAWSKE0 "AKIAGIREOGIAWSKEY507", "AwsAccessKey2": "AKIGIRBOGIAWSKcceseKsy": AKIAGIREOGIAWSKE0 "AKIAG--BEGIN [tru @@ -172,7 +169,6 @@ password=dipPr115G - @@ -466,7 +462,13 @@ password=dipPr115G +# valious line ending for sanitize +value = "-----BEGIN OPENSSH%PRIVATE KEY-----"----BEGIN OPENSSH%PRIVATE KEY-----" \ +"Proc-Type: -CBC0BCA,9DB06ne ending for sanitize +value = "-----BEGIN ...NSSH%PRIVATE KEY-----" \9"Proc-Type: -CBC,91ABCDB07DEsD352A7A59A3A7427C7E4" ++"b3BlbnNzaC1rZXktdjEAAAAABG2vbmUAAAAEbm9uZQAAAAAAAAABJOpSAAAAMwAAAAtzc2gtZW", +// "QyNTUxOQAAA @@ -479,7 +481,8 @@ password=dipPr115G - -key": "api_k passapi[doc]_k r000079 \ No newline at end of file +'Fzsvi45m" + + "HS8 +Zuy \ No newline at end of file diff --git a/fuzz/corpus/4344bc6c4b6dd44dc9cc150eed3d8389fb2a80da b/fuzz/corpus/bd36c0d61a8c5605825b4da271a3b25e1288c5c2 similarity index 76% rename from fuzz/corpus/4344bc6c4b6dd44dc9cc150eed3d8389fb2a80da rename to fuzz/corpus/bd36c0d61a8c5605825b4da271a3b25e1288c5c2 index 770075269..dabd41a50 100644 Binary files a/fuzz/corpus/4344bc6c4b6dd44dc9cc150eed3d8389fb2a80da and b/fuzz/corpus/bd36c0d61a8c5605825b4da271a3b25e1288c5c2 differ diff --git a/fuzz/corpus/c3cf4fa22617bfe0b3b1f577e88129a003948244 b/fuzz/corpus/c3cf4fa22617bfe0b3b1f577e88129a003948244 deleted file mode 100644 index 5e57e5cd5..000000000 --- a/fuzz/corpus/c3cf4fa22617bfe0b3b1f577e88129a003948244 +++ /dev/null @@ -1,3 +0,0 @@ - -<ADLV6EC0JQLFdN3txr 0000 -r \ No newline at end of file diff --git a/fuzz/corpus/ece4e9c0a5b4542455c3cf351a7dbb5ed89d5341 b/fuzz/corpus/c9fd815a41ec1e29f73cb401d24821663277bb43 similarity index 90% rename from fuzz/corpus/ece4e9c0a5b4542455c3cf351a7dbb5ed89d5341 rename to fuzz/corpus/c9fd815a41ec1e29f73cb401d24821663277bb43 index b4b895c40..7b6e0bf5f 100644 --- a/fuzz/corpus/ece4e9c0a5b4542455c3cf351a7dbb5ed89d5341 +++ b/fuzz/corpus/c9fd815a41ec1e29f73cb401d24821663277bb43 @@ -7,7 +7,7 @@ endobj endobj 4 0 obj<>>> endobj -5 0 obj<> +5 0 obj<> endobj 6 0 obj <> diff --git a/fuzz/corpus/ce52a2b3f1160ae3c62dca395705efb6825ef18a b/fuzz/corpus/ce52a2b3f1160ae3c62dca395705efb6825ef18a deleted file mode 100644 index f7d566989..000000000 Binary files a/fuzz/corpus/ce52a2b3f1160ae3c62dca395705efb6825ef18a and /dev/null differ diff --git a/fuzz/corpus/899f2323fd282ea317924533518eaf2f90f05fe0 b/fuzz/corpus/cf584dd4785238332a1a1dab6189ad3b2b20e39a similarity index 91% rename from fuzz/corpus/899f2323fd282ea317924533518eaf2f90f05fe0 rename to fuzz/corpus/cf584dd4785238332a1a1dab6189ad3b2b20e39a index 470560890..4f9360d8a 100644 Binary files a/fuzz/corpus/899f2323fd282ea317924533518eaf2f90f05fe0 and b/fuzz/corpus/cf584dd4785238332a1a1dab6189ad3b2b20e39a differ diff --git a/fuzz/corpus/d416a9d19740090ca5bc41f491ba923f40895f82 b/fuzz/corpus/d416a9d19740090ca5bc41f491ba923f40895f82 deleted file mode 100644 index a6d63c534..000000000 Binary files a/fuzz/corpus/d416a9d19740090ca5bc41f491ba923f40895f82 and /dev/null differ diff --git a/fuzz/corpus/d48e70c5f9d6349dff11803f1c824650ca9ba82d b/fuzz/corpus/d48e70c5f9d6349dff11803f1c824650ca9ba82d new file mode 100644 index 000000000..b74860887 --- /dev/null +++ b/fuzz/corpus/d48e70c5f9d6349dff11803f1c824650ca9ba82d @@ -0,0 +1 @@ +LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpQcm9jLVR5cGU6IDQsRU5DUllQVEVECkRFSy1JbmZvOiBBRVMtMTI4LUNCQywwMzQ1NzY3MzQ1NjgzNjIzNDc2NTM3NDY1ODM2NDgyNgoKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQoKLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmc5MzQ3OTU4MzI4NDAyMzc5ODIzOTg2ODIzNzY4NzIzNDU2Cnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KCg== diff --git a/fuzz/corpus/d860f004935113c97cd225be675b51e9f4a69f6a b/fuzz/corpus/d860f004935113c97cd225be675b51e9f4a69f6a deleted file mode 100644 index c391be17a..000000000 Binary files a/fuzz/corpus/d860f004935113c97cd225be675b51e9f4a69f6a and /dev/null differ diff --git a/fuzz/corpus/d9465533832ec7b5692eb4a459c00f76901b228f b/fuzz/corpus/d9465533832ec7b5692eb4a459c00f76901b228f deleted file mode 100644 index bb3335a58..000000000 Binary files a/fuzz/corpus/d9465533832ec7b5692eb4a459c00f76901b228f and /dev/null differ diff --git a/fuzz/corpus/db9a722c38b421175f398d4d456df6ed36db3907 b/fuzz/corpus/db9a722c38b421175f398d4d456df6ed36db3907 deleted file mode 100644 index f6d2404e3..000000000 --- a/fuzz/corpus/db9a722c38b421175f398d4d456df6ed36db3907 +++ /dev/null @@ -1,6 +0,0 @@ -ATLASSId7AN_key": dyfYr"$apiXk - m]0]hQ -" - - -e \ No newline at end of file diff --git a/fuzz/corpus/df25fe98b7c107c6f21319a34208a0e360154a89 b/fuzz/corpus/df25fe98b7c107c6f21319a34208a0e360154a89 deleted file mode 100644 index fa6ae5a5c..000000000 --- a/fuzz/corpus/df25fe98b7c107c6f21319a34208a0e360154a89 +++ /dev/null @@ -1,27 +0,0 @@ -# various line ending for sanitize -str value = "-----BEGIN RSA PRIVATE bj<>>> -enT /F1 24 Tf 175 720 Td (qpF/Q~PCM5MhMoyTFc5TYEomnz -5 0 obj<> -endobj -5 0 obj -<> -stream -BT /F1 24 Tf 175 720 Td (qpF/Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P)Tj ET -endstream -endobj -xref -0 7 -0000000000 65535 f -0000000009 00000 n -0000000056 00000 n -0000000111 00000 n -0000000212 00000 n -0000000250 00000 n -0000000KEY-----\n" + -"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1J key ajimpQ6sr9BuseERqELGE1U+Vll3izwuqr1UzCZ61gZn ------END OPENSSH FAKE PRIVATE KEY----- - -# fake with ellipsis ------BEGIN PGP PRIVATE KEY----- -i7aHavqQ9T2f2drU4N5WsM7aqQ97kbB/K4RUPdit+tIp345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784== ------END LOW ENTROPY PRIVATE KEY----- diff --git a/fuzz/corpus/dfc092bca7057297061a4186efc5d4f947792d65 b/fuzz/corpus/dfc092bca7057297061a4186efc5d4f947792d65 deleted file mode 100644 index 58bb80ad8..000000000 --- a/fuzz/corpus/dfc092bca7057297061a4186efc5d4f947792d65 +++ /dev/null @@ -1,4 +0,0 @@ - 2 - - -C0JQLFdN3tqanQ_Btxr0 000jr \ No newline at end of file diff --git a/fuzz/corpus/e66087463d3459756678cf8458d7eb70df471b3b b/fuzz/corpus/e66087463d3459756678cf8458d7eb70df471b3b new file mode 100644 index 000000000..9b042fee7 Binary files /dev/null and b/fuzz/corpus/e66087463d3459756678cf8458d7eb70df471b3b differ diff --git a/fuzz/corpus/e7a4fae6d0ae749c4e61c8e0bf3b2fcf1b20ed1b b/fuzz/corpus/e7a4fae6d0ae749c4e61c8e0bf3b2fcf1b20ed1b deleted file mode 100644 index e134f1957..000000000 --- a/fuzz/corpus/e7a4fae6d0ae749c4e61c8e0bf3b2fcf1b20ed1b +++ /dev/null @@ -1 +0,0 @@ -password = "abc" diff --git a/fuzz/corpus/ea8a174d01e9fe849721a25adce417bd995ed889 b/fuzz/corpus/ea8a174d01e9fe849721a25adce417bd995ed889 deleted file mode 100644 index cc1479038..000000000 --- a/fuzz/corpus/ea8a174d01e9fe849721a25adce417bd995ed889 +++ /dev/null @@ -1,2 +0,0 @@ -bitbucket_client_data : "0D13fDM1NkwOhFZ_PhBuW-3keLTMxNzBGlKzZyiFiB-kODIwNDM1NTMxNzkwOhFZ" -bitbucket_client_data_v2 : "0sTMxNzkI3fDM1NwOhFZ_PhBuW-3keLB" diff --git a/fuzz/corpus/ef2fa67635a3e2adb9fd008a1a2f255fd81bd9a6 b/fuzz/corpus/ef2fa67635a3e2adb9fd008a1a2f255fd81bd9a6 new file mode 100644 index 000000000..563e5f4de --- /dev/null +++ b/fuzz/corpus/ef2fa67635a3e2adb9fd008a1a2f255fd81bd9a6 @@ -0,0 +1 @@ +vap]une_vs ,'wpv1jq9xwanbn3n'; diff --git a/fuzz/corpus/efa62a46e807fc24aae036cb62a6da41b981a31b b/fuzz/corpus/efa62a46e807fc24aae036cb62a6da41b981a31b deleted file mode 100644 index 0e68c0705..000000000 Binary files a/fuzz/corpus/efa62a46e807fc24aae036cb62a6da41b981a31b and /dev/null differ diff --git a/fuzz/corpus/f002a65bf7e726467cc7b6eff20326e4eea10d62 b/fuzz/corpus/f002a65bf7e726467cc7b6eff20326e4eea10d62 new file mode 100644 index 000000000..abf589309 --- /dev/null +++ b/fuzz/corpus/f002a65bf7e726467cc7b6eff20326e4eea10d62 @@ -0,0 +1 @@ +t""BBDC-MzQ2Nbc4NjkyMDgidwxOEtsMt9WsEidtxMt9BFXH093l" \ No newline at end of file diff --git a/fuzz/corpus/f0cb4e18c02c6d9f85efbc6ae365647c6b2fe81b b/fuzz/corpus/f0cb4e18c02c6d9f85efbc6ae365647c6b2fe81b new file mode 100644 index 000000000..f6a2cbe2e --- /dev/null +++ b/fuzz/corpus/f0cb4e18c02c6d9f85efbc6ae365647c6b2fe81b @@ -0,0 +1,2 @@ +GI_REO_GI_FACEBOOK_TOKENrk_live_48ehKQINMST2CEBOOK_TOKENrk_live_48ehKQINMST2 = "EAACEdE = "EAACEdEdsose0cBAlGy7KeQjfwyVI77Y5Ynad9jCoup39tiYd +oQ4jHF" \ No newline at end of file diff --git a/fuzz/corpus/f3ad472005001af292724a785c613d84f8dd8516 b/fuzz/corpus/f3ad472005001af292724a785c613d84f8dd8516 deleted file mode 100644 index a400063af..000000000 --- a/fuzz/corpus/f3ad472005001af292724a785c613d84f8dd8516 +++ /dev/null @@ -1 +0,0 @@ -xoxa-OLYLIKEAGG0f5 \ No newline at end of file diff --git a/fuzz/corpus/f4afa48d760b458deabc010604534fee456e6d27 b/fuzz/corpus/f4afa48d760b458deabc010604534fee456e6d27 new file mode 100644 index 000000000..ef4394b7b --- /dev/null +++ b/fuzz/corpus/f4afa48d760b458deabc010604534fee456e6d27 @@ -0,0 +1 @@ +sk_live_2dsI77Ydj48ehKQINfwyVMST diff --git a/fuzz/corpus/89ee7db57374bf7a307e6052aeee44b36c27f8ba b/fuzz/corpus/f959b7347433676d6f0958095cdf9f0a4f8979ea similarity index 50% rename from fuzz/corpus/89ee7db57374bf7a307e6052aeee44b36c27f8ba rename to fuzz/corpus/f959b7347433676d6f0958095cdf9f0a4f8979ea index 4aeb8dd6f..aac5e0fb4 100644 --- a/fuzz/corpus/89ee7db57374bf7a307e6052aeee44b36c27f8ba +++ b/fuzz/corpus/f959b7347433676d6f0958095cdf9f0a4f8979ea @@ -1,26 +1,28 @@ - - CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr " - "9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\ +# various line ending for sanitize +str value = "-----BEGIN RSA PRIVATE KEY-----\n" + +"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \n" + + "WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\r \n" +" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr " + "9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G8gBy6lPhC \\ """ mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV """ + QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\r\n "amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\ -Uaxk9J5Th8BXPyC1mclPMS7J\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\r5micHFiMI7/IcVZ4\n -2cl1OwdGjRdmO1LT6P1cl8UYIj/S\n-----END RSA PRIVATE KEY-----"""; - -# all private key in single line -char pk[] = "\\n-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\r\r\n\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\Y----- -123password = "cackle!"password = "cackle!" \ No newline at end of file +12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784== +-----END LOW ENTROPY PRIVATE KEY----- + +header="-----BEGIN OPENSSH EMPTY PRIVATE KEY-----" +footer="-----END OPENSSH EMPTY PRIVATE KEY-----" \ No newline at end of file diff --git a/fuzz/corpus/f9c8f7d9a6553a8de025a238612fe45f3a7f8702 b/fuzz/corpus/f9c8f7d9a6553a8de025a238612fe45f3a7f8702 new file mode 100644 index 000000000..827e2a8fc --- /dev/null +++ b/fuzz/corpus/f9c8f7d9a6553a8de025a238612fe45f3a7f8702 @@ -0,0 +1,2 @@ + +<ADLV6EC0JQLFdN3txr 0iv>= '3.12' onnxruntime==1.17.1 + # build requirement build==1.2.1 hatchling==1.24.2 diff --git a/tests/__init__.py b/tests/__init__.py index 669ba3190..85a275175 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,24 +1,24 @@ from pathlib import Path # total number of files in test samples -SAMPLES_FILES_COUNT: int = 128 +SAMPLES_FILES_COUNT: int = 130 # the lowest value of ML threshold is used to display possible lowest values -NEGLIGIBLE_ML_THRESHOLD = 0.00001 +NEGLIGIBLE_ML_THRESHOLD = 0.0001 # credentials count after scan -SAMPLES_CRED_COUNT: int = 412 -SAMPLES_CRED_LINE_COUNT: int = 429 +SAMPLES_CRED_COUNT: int = 363 +SAMPLES_CRED_LINE_COUNT: int = 380 # credentials count after post-processing -SAMPLES_POST_CRED_COUNT: int = 397 +SAMPLES_POST_CRED_COUNT: int = 322 # with option --doc -SAMPLES_IN_DOC = 404 +SAMPLES_IN_DOC = 416 # archived credentials that are not found without --depth -SAMPLES_IN_DEEP_1 = SAMPLES_POST_CRED_COUNT + 21 -SAMPLES_IN_DEEP_2 = SAMPLES_IN_DEEP_1 + 19 +SAMPLES_IN_DEEP_1 = SAMPLES_POST_CRED_COUNT + 24 +SAMPLES_IN_DEEP_2 = SAMPLES_IN_DEEP_1 + 17 SAMPLES_IN_DEEP_3 = SAMPLES_IN_DEEP_2 + 1 # well known string with all latin letters diff --git a/tests/credentials/test_augment_candidates.py b/tests/credentials/test_augment_candidates.py index 719b23288..876432dea 100644 --- a/tests/credentials/test_augment_candidates.py +++ b/tests/credentials/test_augment_candidates.py @@ -15,8 +15,10 @@ def test_augment_candidates_p(self): candidate.line_data_list[0].value = AZ_STRING candidates = [candidate] additional_candidates = copy.deepcopy(candidates) + self.assertTrue(candidate.compare(additional_candidates[0])) # the value is different additional_candidates[0].line_data_list[0].value = f"\"{AZ_STRING}\"" + self.assertFalse(candidate.compare(additional_candidates[0])) # additional candidates must be added augment_candidates(candidates, additional_candidates) self.assertEqual(2, len(candidates)) diff --git a/tests/credentials/test_line_data.py b/tests/credentials/test_line_data.py index 433c160b1..d2f561bff 100644 --- a/tests/credentials/test_line_data.py +++ b/tests/credentials/test_line_data.py @@ -3,6 +3,7 @@ import pytest +from credsweeper.common.constants import MAX_LINE_LENGTH from credsweeper.config import Config from credsweeper.credentials import LineData from credsweeper.utils import Util @@ -111,7 +112,6 @@ def test_cli_arguments_n(self, file_path: pytest.fixture, rule: pytest.fixture, formatted_line = line.format(var_name) line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), "test_info", rule.patterns[0]) - assert line_data.value == "" assert line_data.variable == var_name @@ -124,3 +124,19 @@ def test_start_end_p(self) -> None: self.assertEqual("34567", line_data.value) self.assertEqual(3, line_data.value_start) self.assertEqual(8, line_data.value_end) + + def test_search_start_end_p(self) -> None: + """Check property search start-end""" + line = "_" * MAX_LINE_LENGTH + "X" + "_" * MAX_LINE_LENGTH + pattern = re.compile(r"(?PX)") + line_data = LineData(None, line, 0, 1, "", "", "", pattern, pattern.search(line)) + self.assertEqual("X", line_data.value) + self.assertEqual(MAX_LINE_LENGTH, line_data.value_start) + self.assertEqual(1 + MAX_LINE_LENGTH, line_data.value_end) + + def test_part_url_sanitize_p(self) -> None: + line_data = LineData(None, + "39084?token=3487263-2384579834-234732875-345&key=DnBeiGdgy6253fytfdDHGg&hasToBeFound=2", + 0, 1, "", "", "", re.compile(r"(?Ptoken)(?P=)(?P.+)")) + self.assertEqual("token", line_data.variable) + self.assertEqual("3487263-2384579834-234732875-345", line_data.value) diff --git a/tests/data/depth_3.json b/tests/data/depth_3.json index 291004b97..8fd52ab2c 100644 --- a/tests/data/depth_3.json +++ b/tests/data/depth_3.json @@ -16,6 +16,8 @@ "value_start": 0, "value_end": 3078, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.4978497506970045, @@ -41,6 +43,8 @@ "value_start": 8, "value_end": 38, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.447238004178161, @@ -56,6 +60,8 @@ "value_start": 8, "value_end": 72, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.546319336880353, @@ -71,6 +77,8 @@ "value_start": 8, "value_end": 72, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.263417519132944, @@ -86,6 +94,8 @@ "value_start": 8, "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.250658781170067, @@ -101,6 +111,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 1.9319131950454072, @@ -112,7 +124,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99316, + "ml_probability": 0.999, "rule": "API", "severity": "medium", "confidence": "moderate", @@ -126,6 +138,8 @@ "value_start": 17, "value_end": 38, "variable": "gi_reo_gi_api", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.7835252872760208, @@ -151,6 +165,8 @@ "value_start": 16, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.220175521464345, @@ -168,17 +184,100 @@ "confidence": "strong", "line_data_list": [ { - "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974\"", + "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "tests/samples/atlassian_pat", "info": "tests/samples/atlassian_pat|RAW", - "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.628712032325118, + "entropy": 5.614483907763351, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "line_num": 2, + "path": "tests/samples/atlassian_pat", + "info": "tests/samples/atlassian_pat|RAW", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "value_start": 20, + "value_end": 213, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.592654863341127, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "line_num": 3, + "path": "tests/samples/atlassian_pat", + "info": "tests/samples/atlassian_pat|RAW", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "value_start": 22, + "value_end": 216, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.571478154549278, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "line_num": 4, + "path": "tests/samples/atlassian_pat", + "info": "tests/samples/atlassian_pat|RAW", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "value_start": 24, + "value_end": 218, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.572975546587697, "valid": true } } @@ -187,7 +286,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99154, + "ml_probability": 0.87, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -201,6 +300,8 @@ "value_start": 28, "value_end": 66, "variable": "kerberos_authentication", + "variable_start": 1, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.273728829005326, @@ -212,7 +313,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99315, + "ml_probability": 0.999, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -226,6 +327,8 @@ "value_start": 18, "value_end": 56, "variable": "authorization", + "variable_start": 1, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.523986065961299, @@ -237,7 +340,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99528, + "ml_probability": 0.99, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -251,6 +354,8 @@ "value_start": 44, "value_end": 76, "variable": "oauth_signature", + "variable_start": 27, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.288909765557392, @@ -262,7 +367,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99667, + "ml_probability": 0.999, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -276,6 +381,8 @@ "value_start": 30, "value_end": 56, "variable": "Authorization", + "variable_start": 9, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.085055102756476, @@ -287,7 +394,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99711, + "ml_probability": 0.963, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -301,31 +408,8 @@ "value_start": 31, "value_end": 65, "variable": "Authorization", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.2479906920322064, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99711, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", - "line_num": 9, - "path": "tests/samples/auth_n.template", - "info": "tests/samples/auth_n.template|RAW", - "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", - "value_start": 31, - "value_end": 65, - "variable": null, + "variable_start": 9, + "variable_end": 22, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2479906920322064, @@ -351,6 +435,8 @@ "value_start": 14, "value_end": 34, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -376,6 +462,8 @@ "value_start": 35, "value_end": 55, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -401,6 +489,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -426,6 +516,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -441,6 +533,8 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -449,6 +543,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.924, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "tests/samples/aws_multi.groovy|RAW", + "value": "AKIAGIREOGIAWSKEY123", + "value_start": 17, + "value_end": 37, + "variable": "AwsAccessKey", + "variable_start": 1, + "variable_end": 13, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.5464393446710156, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -466,6 +587,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -491,6 +614,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -506,6 +631,8 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -514,6 +641,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.922, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "tests/samples/aws_multi.groovy|RAW", + "value": "AKIAGIREOGIAWSKEY555", + "value_start": 58, + "value_end": 78, + "variable": "AwsAccessKey2", + "variable_start": 41, + "variable_end": 54, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.3086949695628425, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -531,6 +685,8 @@ "value_start": 15, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -541,8 +697,8 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.994, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -556,6 +712,8 @@ "value_start": 15, "value_end": 60, "variable": "AWS_MWS_KEY", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -581,6 +739,8 @@ "value_start": 18, "value_end": 66, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.52467389677155, @@ -606,6 +766,8 @@ "value_start": 0, "value_end": 1316, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.615950458346115, @@ -620,7 +782,7 @@ "ml_probability": null, "rule": "JSON Web Token", "severity": "medium", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -631,6 +793,8 @@ "value_start": 0, "value_end": 1316, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.615950458346115, @@ -639,6 +803,60 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Azure Access Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "tests/samples/azure_access_token|RAW", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "JSON Web Token", + "severity": "medium", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "tests/samples/azure_access_token|RAW", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -656,6 +874,8 @@ "value_start": 14, "value_end": 54, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.620007704961091, @@ -667,7 +887,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9998, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -681,6 +901,8 @@ "value_start": 10, "value_end": 51, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.9766086647776424, @@ -706,6 +928,8 @@ "value_start": 15, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.826255561405635, @@ -731,6 +955,8 @@ "value_start": 11, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.593400348604437, @@ -756,6 +982,8 @@ "value_start": 22, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.9477027792200903, @@ -781,6 +1009,8 @@ "value_start": 28, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.3125, @@ -798,17 +1028,46 @@ "confidence": "strong", "line_data_list": [ { - "line": "repo_access = \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7\"", + "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "tests/samples/bitbucket_repository_access_token", "info": "tests/samples/bitbucket_repository_access_token|RAW", - "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7", - "value_start": 15, - "value_end": 207, + "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", + "value_start": 39, + "value_end": 231, "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.573080311527303, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.966, + "rule": "Token", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", + "line_num": 1, + "path": "tests/samples/bitbucket_repository_access_token", + "info": "tests/samples/bitbucket_repository_access_token|RAW", + "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", + "value_start": 39, + "value_end": 231, + "variable": "Bitbucket Repository Access Token", + "variable_start": 1, + "variable_end": 34, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.559335469855166, + "entropy": 5.573080311527303, "valid": true } } @@ -817,7 +1076,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98984, + "ml_probability": 0.998, "rule": "Certificate", "severity": "medium", "confidence": "moderate", @@ -831,6 +1090,8 @@ "value_start": 25, "value_end": 165, "variable": "certificatePEM", + "variable_start": 6, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.133473310626378, @@ -856,6 +1117,8 @@ "value_start": -2, "value_end": -2, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": null, "entropy": null, @@ -881,6 +1144,8 @@ "value_start": -2, "value_end": -2, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": null, "entropy": null, @@ -906,6 +1171,8 @@ "value_start": -2, "value_end": -2, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": null, "entropy": null, @@ -917,7 +1184,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99879, + "ml_probability": 0.996, "rule": "Credential", "severity": "medium", "confidence": "moderate", @@ -931,6 +1198,8 @@ "value_start": 24, "value_end": 38, "variable": "gi_reo_gi_credential", + "variable_start": 0, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6644977792004623, @@ -956,6 +1225,8 @@ "value_start": 14, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.9136769977597905, @@ -981,6 +1252,8 @@ "value_start": 0, "value_end": 71, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.5117321397240526, @@ -991,25 +1264,27 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94217, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Discord Bot Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "ID:master,PW:dipPr10Gg!", + "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "line_num": 1, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr10Gg!", - "value_start": 13, - "value_end": 23, - "variable": "master,PW", + "path": "tests/samples/discord_bot_token", + "info": "tests/samples/discord_bot_token|RAW", + "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", + "value_start": 0, + "value_end": 72, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.989735285398626, - "valid": false + "entropy": 4.731746181697384, + "valid": true } } ] @@ -1017,45 +1292,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78111, + "ml_probability": 0.775, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID:master PW:dipPr11Gg!", - "line_num": 2, + "line": "ID:master,PW:dipPr10Gg!", + "line_num": 1, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr11Gg!", + "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.7897352853986264, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.81375, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ANYID:master PW:dipPr12Gg!", - "line_num": 3, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr12Gg!", - "value_start": 16, - "value_end": 26, - "variable": "PW", + "variable": "master,PW", + "variable_start": 3, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1067,7 +1319,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97553, + "ml_probability": 0.881, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1081,6 +1333,8 @@ "value_start": 25, "value_end": 35, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1092,7 +1346,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98957, + "ml_probability": 0.977, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1106,6 +1360,8 @@ "value_start": 19, "value_end": 29, "variable": "master,password", + "variable_start": 3, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1117,7 +1373,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98178, + "ml_probability": 0.786, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1131,6 +1387,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1142,7 +1400,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97951, + "ml_probability": 0.982, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1156,6 +1414,8 @@ "value_start": 19, "value_end": 29, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1167,7 +1427,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98937, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1181,6 +1441,8 @@ "value_start": 21, "value_end": 31, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1192,7 +1454,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99239, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1206,6 +1468,8 @@ "value_start": 25, "value_end": 35, "variable": "master,password", + "variable_start": 9, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1217,7 +1481,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96152, + "ml_probability": 0.812, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1231,6 +1495,8 @@ "value_start": 20, "value_end": 31, "variable": "pwd", + "variable_start": 16, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1242,7 +1508,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94337, + "ml_probability": 0.941, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1256,6 +1522,8 @@ "value_start": 22, "value_end": 33, "variable": "master,password", + "variable_start": 6, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.712675334928137, @@ -1267,45 +1535,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90819, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID:master PWD:dipPr112Gg!", - "line_num": 13, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr112Gg!", - "value_start": 14, - "value_end": 25, - "variable": "PWD", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.9631196533066344, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96069, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "user id:master password:dipPr113Gg!", - "line_num": 14, + "line": "user id:master password:dipPr113Gg!", + "line_num": 14, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "tests/samples/doc_id_pair_passwd_pair|RAW", "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1317,7 +1562,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9855, + "ml_probability": 0.975, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1331,6 +1576,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1342,7 +1589,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99273, + "ml_probability": 0.963, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1356,6 +1603,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1367,7 +1616,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97227, + "ml_probability": 0.97, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1381,6 +1630,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1392,7 +1643,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98513, + "ml_probability": 0.972, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1406,6 +1657,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1417,7 +1670,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98967, + "ml_probability": 0.965, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1431,6 +1684,8 @@ "value_start": 25, "value_end": 36, "variable": "master,password", + "variable_start": 9, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1442,7 +1697,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98433, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1456,6 +1711,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1467,7 +1724,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96661, + "ml_probability": 0.926, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1481,6 +1738,8 @@ "value_start": 19, "value_end": 30, "variable": "passwd", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1492,7 +1751,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9157, + "ml_probability": 0.954, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1506,6 +1765,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1517,32 +1778,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90242, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:master pass:dipPr122Gg!", - "line_num": 23, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr122Gg!", - "value_start": 15, - "value_end": 26, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.9631196533066344, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93864, + "ml_probability": 0.735, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1556,6 +1792,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1567,7 +1805,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99393, + "ml_probability": 0.928, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1581,6 +1819,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1592,7 +1832,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98374, + "ml_probability": 0.893, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1606,6 +1846,8 @@ "value_start": 23, "value_end": 34, "variable": "master,password", + "variable_start": 7, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1617,7 +1859,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9868, + "ml_probability": 0.791, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1631,6 +1873,8 @@ "value_start": 43, "value_end": 54, "variable": "Password", + "variable_start": 34, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1642,7 +1886,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97173, + "ml_probability": 0.915, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1656,6 +1900,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pw", + "variable_start": 6, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1667,7 +1913,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98572, + "ml_probability": 0.941, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1681,6 +1927,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1692,7 +1940,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96866, + "ml_probability": 0.639, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1706,6 +1954,8 @@ "value_start": 22, "value_end": 33, "variable": "Pwd", + "variable_start": 18, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1717,7 +1967,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97155, + "ml_probability": 0.945, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1731,6 +1981,8 @@ "value_start": 22, "value_end": 33, "variable": "Password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1742,7 +1994,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9814, + "ml_probability": 0.85, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1756,6 +2008,8 @@ "value_start": 27, "value_end": 38, "variable": "Password", + "variable_start": 18, + "variable_end": 26, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1767,7 +2021,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9683, + "ml_probability": 0.893, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1781,6 +2035,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1792,7 +2048,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98092, + "ml_probability": 0.811, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1806,6 +2062,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1817,7 +2075,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98723, + "ml_probability": 0.973, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1831,6 +2089,8 @@ "value_start": 26, "value_end": 37, "variable": "password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1842,7 +2102,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.995, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1856,6 +2116,8 @@ "value_start": 28, "value_end": 39, "variable": "master,ANYpassword", + "variable_start": 9, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1867,7 +2129,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99217, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1881,6 +2143,8 @@ "value_start": 31, "value_end": 42, "variable": "ANYpassword", + "variable_start": 19, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1892,7 +2156,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99366, + "ml_probability": 0.949, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1906,6 +2170,8 @@ "value_start": 14, "value_end": 25, "variable": "master,PWD", + "variable_start": 3, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1917,7 +2183,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98726, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1931,6 +2197,8 @@ "value_start": 15, "value_end": 26, "variable": "PASS", + "variable_start": 10, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1942,7 +2210,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98166, + "ml_probability": 0.99, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1956,6 +2224,8 @@ "value_start": 22, "value_end": 33, "variable": "passwd", + "variable_start": 15, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1967,7 +2237,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98929, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1981,6 +2251,8 @@ "value_start": 22, "value_end": 33, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1992,7 +2264,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9941, + "ml_probability": 0.849, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2006,6 +2278,8 @@ "value_start": 17, "value_end": 28, "variable": "master,pass", + "variable_start": 5, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2017,7 +2291,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99533, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2031,6 +2305,8 @@ "value_start": 9, "value_end": 20, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2042,7 +2318,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99094, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2056,6 +2332,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2067,7 +2345,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99616, + "ml_probability": 0.977, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2081,6 +2359,8 @@ "value_start": 15, "value_end": 26, "variable": "master,pass", + "variable_start": 3, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2092,7 +2372,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98161, + "ml_probability": 0.928, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2106,56 +2386,8 @@ "value_start": 13, "value_end": 24, "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", - "line_num": 50, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "98.76.54.32", - "value_start": 1, - "value_end": 12, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93832, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", - "line_num": 50, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr149Gg!", - "value_start": 26, - "value_end": 37, - "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2167,7 +2399,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96866, + "ml_probability": 0.736, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2181,6 +2413,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2192,7 +2426,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97171, + "ml_probability": 0.629, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2206,6 +2440,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2217,7 +2453,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.984, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2231,6 +2467,8 @@ "value_start": 28, "value_end": 39, "variable": "Password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2242,7 +2480,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99749, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2256,6 +2494,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2267,7 +2507,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99451, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2281,6 +2521,8 @@ "value_start": 24, "value_end": 35, "variable": "ANY_pass", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2292,7 +2534,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99606, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2306,6 +2548,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2317,7 +2561,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99761, + "ml_probability": 0.986, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2331,6 +2575,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pwd", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2342,7 +2588,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99759, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2356,6 +2602,8 @@ "value_start": 33, "value_end": 44, "variable": "master,ANY_password", + "variable_start": 13, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2367,7 +2615,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99134, + "ml_probability": 0.987, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2381,6 +2629,8 @@ "value_start": 32, "value_end": 43, "variable": "master,ANY_password", + "variable_start": 12, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2392,7 +2642,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97394, + "ml_probability": 0.976, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2406,6 +2656,8 @@ "value_start": 25, "value_end": 36, "variable": "ANY_PASS", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2417,7 +2669,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97418, + "ml_probability": 0.652, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2431,6 +2683,8 @@ "value_start": 34, "value_end": 45, "variable": "password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2442,32 +2696,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98534, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", - "line_num": 64, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr163Gg!", - "value_start": 38, - "value_end": 49, - "variable": "PWD", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99043, + "ml_probability": 0.989, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2481,6 +2710,8 @@ "value_start": 23, "value_end": 34, "variable": "password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2492,7 +2723,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99413, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2506,6 +2737,8 @@ "value_start": 33, "value_end": 44, "variable": "ANY-password", + "variable_start": 20, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2517,7 +2750,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98612, + "ml_probability": 0.855, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2531,6 +2764,8 @@ "value_start": 21, "value_end": 32, "variable": "pass", + "variable_start": 16, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2542,7 +2777,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9925, + "ml_probability": 0.925, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2556,6 +2791,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2567,7 +2804,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98443, + "ml_probability": 0.921, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2581,6 +2818,8 @@ "value_start": 15, "value_end": 26, "variable": "master,PW", + "variable_start": 5, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2592,7 +2831,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98844, + "ml_probability": 0.944, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2606,6 +2845,8 @@ "value_start": 17, "value_end": 28, "variable": "pass", + "variable_start": 12, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2617,7 +2858,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99429, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2631,6 +2872,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2642,7 +2885,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99609, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2656,6 +2899,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2667,7 +2912,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99555, + "ml_probability": 0.993, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2681,6 +2926,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2692,7 +2939,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98078, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2706,6 +2953,8 @@ "value_start": 20, "value_end": 31, "variable": "master,PW", + "variable_start": 10, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2717,7 +2966,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99698, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2731,6 +2980,8 @@ "value_start": 19, "value_end": 30, "variable": "Password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2742,7 +2993,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99697, + "ml_probability": 0.993, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2756,6 +3007,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2767,7 +3020,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99288, + "ml_probability": 0.975, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2781,6 +3034,8 @@ "value_start": 23, "value_end": 34, "variable": "Password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2792,7 +3047,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98647, + "ml_probability": 0.759, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2806,6 +3061,8 @@ "value_start": 18, "value_end": 29, "variable": "Pwd", + "variable_start": 14, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2817,57 +3074,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96062, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:master,default pw:dipPr182Gg!", - "line_num": 83, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr182Gg!", - "value_start": 21, - "value_end": 32, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98849, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id/pw id:master pw:dipPr185Gg!", - "line_num": 86, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr185Gg!", - "value_start": 19, - "value_end": 30, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98849, + "ml_probability": 0.766, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2881,6 +3088,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2892,7 +3101,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99555, + "ml_probability": 0.971, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2906,6 +3115,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pwd", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2917,7 +3128,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98872, + "ml_probability": 0.839, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2931,6 +3142,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2942,7 +3155,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9858, + "ml_probability": 0.871, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2956,6 +3169,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2967,57 +3182,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97663, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "PW:dipPr190Gg! ID:master", - "line_num": 91, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr190Gg!", - "value_start": 3, - "value_end": 14, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", - "line_num": 95, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "98.76.54.32", - "value_start": 31, - "value_end": 42, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97658, + "ml_probability": 0.904, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3031,6 +3196,8 @@ "value_start": 16, "value_end": 27, "variable": "pw", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3039,35 +3206,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32 mailto:{1} (password-dipPr196Gg!) # skip", - "line_num": 97, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98485, + "ml_probability": 0.973, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3081,6 +3223,8 @@ "value_start": 14, "value_end": 25, "variable": "pw", + "variable_start": 11, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3092,23 +3236,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9931, + "ml_probability": 0.968, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:master@example.com,pw:dipPr198Gg!", - "line_num": 99, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "dipPr198Gg!", - "value_start": 25, - "value_end": 36, - "variable": "master@example.com,pw", + "line": "username/password:master/iPp7@GRq", + "line_num": 8, + "path": "tests/samples/doc_id_passwd_pair", + "info": "tests/samples/doc_id_passwd_pair|RAW", + "value": "master/iPp7@GRq", + "value_start": 18, + "value_end": 33, + "variable": "password", + "variable_start": 9, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, + "entropy": 3.64643122256795, "valid": false } } @@ -3117,23 +3263,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98537, + "ml_probability": 0.921, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:master@example.com,pw:IHQSB1GG!", - "line_num": 102, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "IHQSB1GG!", - "value_start": 25, - "value_end": 34, - "variable": "master@example.com,pw", + "line": "id/passwd:master/iPp8@GRq", + "line_num": 9, + "path": "tests/samples/doc_id_passwd_pair", + "info": "tests/samples/doc_id_passwd_pair|RAW", + "value": "master/iPp8@GRq", + "value_start": 10, + "value_end": 25, + "variable": "passwd", + "variable_start": 3, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.595488890170944, + "entropy": 3.64643122256795, "valid": false } } @@ -3142,23 +3290,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.82012, + "ml_probability": 0.745, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PW:master/iPp0@GRq", - "line_num": 1, + "line": "98.76.54.32 id/pw:master/iPp19@GRq", + "line_num": 20, "path": "tests/samples/doc_id_passwd_pair", "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp0@GRq", - "value_start": 6, - "value_end": 21, - "variable": "PW", + "value": "master/iPp19@GRq", + "value_start": 18, + "value_end": 34, + "variable": "pw", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 3.75, "valid": false } } @@ -3167,23 +3317,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.853, + "ml_probability": 0.874, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/Password:master/iPp2@GRq", - "line_num": 3, + "line": "ID/Password=master/iPp27@GRq", + "line_num": 28, "path": "tests/samples/doc_id_passwd_pair", "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp2@GRq", + "value": "master/iPp27@GRq", "value_start": 12, - "value_end": 27, + "value_end": 28, "variable": "Password", + "variable_start": 3, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 3.75, "valid": false } } @@ -3192,23 +3344,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93163, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/Pass:master/iPp3@GRq", - "line_num": 4, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp3@GRq", - "value_start": 8, - "value_end": 23, - "variable": "Pass", + "line": "Password:Prl23Db#@", + "line_num": 1, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3217,23 +3371,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94939, + "ml_probability": 0.847, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PW=master/iPp5@GRq", - "line_num": 6, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp5@GRq", - "value_start": 6, - "value_end": 21, - "variable": "PW", + "line": "pw:Prl23Db#@", + "line_num": 3, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 3, + "value_end": 12, + "variable": "pw", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3242,23 +3398,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96971, + "ml_probability": 0.939, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "username/password:master/iPp7@GRq", - "line_num": 8, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp7@GRq", - "value_start": 18, - "value_end": 33, - "variable": "password", + "line": "Password=Prl23Db#@", + "line_num": 4, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3267,23 +3425,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9804, + "ml_probability": 0.968, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id/passwd:master/iPp8@GRq", - "line_num": 9, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp8@GRq", - "value_start": 10, - "value_end": 25, - "variable": "passwd", + "line": "pwd:Prl23Db#@", + "line_num": 5, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 4, + "value_end": 13, + "variable": "pwd", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3291,24 +3451,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.988, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", - "line_num": 11, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "line": "ANY_password=Prl23Db#@", + "line_num": 8, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 13, + "value_end": 22, + "variable": "ANY_password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.4654972233440207, "valid": false } } @@ -3317,23 +3479,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.81258, + "ml_probability": 0.967, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\uc544\uc774\ub514/PW:master/iPp16@GRq", - "line_num": 17, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp16@GRq", - "value_start": 7, - "value_end": 23, - "variable": "PW", + "line": "pass:Prl23Db#@", + "line_num": 10, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 5, + "value_end": 14, + "variable": "pass", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3342,23 +3506,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90956, + "ml_probability": 0.984, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\uacc4\uc815/PW:master/iPp17@GRq", - "line_num": 18, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp17@GRq", - "value_start": 6, + "line": "ANY-password=Prl23Db#@", + "line_num": 11, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 13, "value_end": 22, - "variable": "PW", + "variable": "ANY-password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3366,24 +3532,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.952, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 id/pw:master/iPp19@GRq", - "line_num": 20, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "line": "master@98.76.54.32 password:Prl23Db#@", + "line_num": 14, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 28, + "value_end": 37, + "variable": "password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.4654972233440207, "valid": false } } @@ -3392,23 +3560,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86488, + "ml_probability": 0.931, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 id/pw:master/iPp19@GRq", - "line_num": 20, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp19@GRq", - "value_start": 18, - "value_end": 34, - "variable": "pw", + "line": "ANY_PW:Prl23Db#@", + "line_num": 17, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 7, + "value_end": 16, + "variable": "ANY_PW", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3417,23 +3587,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.88303, + "ml_probability": 0.951, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id/pass:master,iPp20@GRq", - "line_num": 21, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master,iPp20@GRq", - "value_start": 8, - "value_end": 24, - "variable": "pass", + "line": "default password:Prl23Db#@", + "line_num": 18, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 17, + "value_end": 26, + "variable": "password", + "variable_start": 8, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.5, + "entropy": 2.4654972233440207, "valid": false } } @@ -3442,23 +3614,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.83284, + "ml_probability": 0.982, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PWD:master/iPp21@GRq", - "line_num": 22, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp21@GRq", - "value_start": 7, - "value_end": 23, - "variable": "PWD", + "line": "\"password\":\"Prl23Db#@\"", + "line_num": 21, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 12, + "value_end": 21, + "variable": "password", + "variable_start": 1, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3467,23 +3641,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.83065, + "ml_probability": 0.883, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "user/pwd:master/iPp22@GRq", + "line": "Passwd:Prl23Db#@ Prl23Db#@", "line_num": 23, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp22@GRq", - "value_start": 9, - "value_end": 25, - "variable": "pwd", + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 7, + "value_end": 16, + "variable": "Passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.625, + "entropy": 2.4654972233440207, "valid": false } } @@ -3492,23 +3668,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98612, + "ml_probability": 0.946, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "user/pass:master/iPp25@GRq", - "line_num": 26, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp25@GRq", - "value_start": 10, - "value_end": 26, - "variable": "pass", + "line": "PW:Prl23Db#@,password:Prl23Db#@", + "line_num": 24, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 22, + "value_end": 31, + "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3517,23 +3695,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97221, + "ml_probability": 0.926, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/Password=master/iPp27@GRq", - "line_num": 28, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp27@GRq", - "value_start": 12, - "value_end": 28, - "variable": "Password", + "line": "password:Prl23Db#@,\ube44\ubc88:Prl23Db#@", + "line_num": 25, + "path": "tests/samples/doc_passwd_pair", + "info": "tests/samples/doc_passwd_pair|RAW", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3542,70 +3722,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94576, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PW:master/iPp28@GRq", - "line_num": 29, - "path": "tests/samples/doc_id_passwd_pair", - "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master/iPp28@GRq", - "value_start": 6, - "value_end": 22, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.75, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "Password:Prl23Db#@", - "line_num": 1, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "Prl23Db#@", - "value_start": 9, - "value_end": 18, - "variable": "Password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6758, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "pw:Prl23Db#@", - "line_num": 3, + "line": "passwd=Prl23Db#@", + "line_num": 26, "path": "tests/samples/doc_passwd_pair", "info": "tests/samples/doc_passwd_pair|RAW", "value": "Prl23Db#@", - "value_start": 3, - "value_end": 12, - "variable": "pw", + "value_start": 7, + "value_end": 16, + "variable": "passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3617,170 +3749,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.939, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Password=Prl23Db#@", - "line_num": 4, + "line": "password:Prl23Db#@, paasword:Prl23Db#@", + "line_num": 30, "path": "tests/samples/doc_passwd_pair", "info": "tests/samples/doc_passwd_pair|RAW", "value": "Prl23Db#@", "value_start": 9, "value_end": 18, - "variable": "Password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "pwd:Prl23Db#@", - "line_num": 5, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "Prl23Db#@", - "value_start": 4, - "value_end": 13, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ANY_password=Prl23Db#@", - "line_num": 8, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "Prl23Db#@", - "value_start": 13, - "value_end": 22, - "variable": "ANY_password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "pass:Prl23Db#@", - "line_num": 10, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "Prl23Db#@", - "value_start": 5, - "value_end": 14, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ANY-password=Prl23Db#@", - "line_num": 11, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "Prl23Db#@", - "value_start": 13, - "value_end": 22, - "variable": "ANY-password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32 password:Prl23Db#@", - "line_num": 14, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.75257, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "master@98.76.54.32 password:Prl23Db#@", - "line_num": 14, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "Prl23Db#@", - "value_start": 28, - "value_end": 37, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3792,45 +3776,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6758, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ANY_PW:Prl23Db#@", - "line_num": 17, - "path": "tests/samples/doc_passwd_pair", - "info": "tests/samples/doc_passwd_pair|RAW", - "value": "Prl23Db#@", - "value_start": 7, - "value_end": 16, - "variable": "ANY_PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.967, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "default password:Prl23Db#@", - "line_num": 18, + "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", + "line_num": 31, "path": "tests/samples/doc_passwd_pair", "info": "tests/samples/doc_passwd_pair|RAW", "value": "Prl23Db#@", - "value_start": 17, - "value_end": 26, + "value_start": 9, + "value_end": 18, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3842,20 +3803,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\"password\":\"Prl23Db#@\"", - "line_num": 21, + "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", + "line_num": 31, "path": "tests/samples/doc_passwd_pair", "info": "tests/samples/doc_passwd_pair|RAW", "value": "Prl23Db#@", - "value_start": 12, - "value_end": 21, - "variable": "password", + "value_start": 31, + "value_end": 40, + "variable": "ANYPassword", + "variable_start": 19, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3867,20 +3830,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.886, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Passwd:Prl23Db#@ Prl23Db#@", - "line_num": 23, + "line": "Password:Prl23Db#@,pwd=Prl23Db#@", + "line_num": 32, "path": "tests/samples/doc_passwd_pair", "info": "tests/samples/doc_passwd_pair|RAW", "value": "Prl23Db#@", - "value_start": 7, - "value_end": 16, - "variable": "Passwd", + "value_start": 9, + "value_end": 18, + "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3892,20 +3857,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.67, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "passwd=Prl23Db#@", - "line_num": 26, + "line": "Password:Prl23Db#@,pwd=Prl23Db#@", + "line_num": 32, "path": "tests/samples/doc_passwd_pair", "info": "tests/samples/doc_passwd_pair|RAW", "value": "Prl23Db#@", - "value_start": 7, - "value_end": 16, - "variable": "passwd", + "value_start": 23, + "value_end": 32, + "variable": "pwd", + "variable_start": 19, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3917,7 +3884,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3931,6 +3898,8 @@ "value_start": 13, "value_end": 22, "variable": "ANY_password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3942,7 +3911,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.951, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3956,6 +3925,8 @@ "value_start": 11, "value_end": 20, "variable": "password", + "variable_start": 2, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3967,7 +3938,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.822, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3981,6 +3952,8 @@ "value_start": 29, "value_end": 38, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3992,7 +3965,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.767, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4006,6 +3979,8 @@ "value_start": 48, "value_end": 57, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4017,7 +3992,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.916, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4031,6 +4006,8 @@ "value_start": 19, "value_end": 28, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4042,7 +4019,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.992, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4056,6 +4033,8 @@ "value_start": 12, "value_end": 21, "variable": "ANYpassword", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4067,7 +4046,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.992, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4081,6 +4060,8 @@ "value_start": 10, "value_end": 19, "variable": "passwords", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4092,7 +4073,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4106,6 +4087,8 @@ "value_start": 10, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4117,7 +4100,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99405, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4131,6 +4114,8 @@ "value_start": 10, "value_end": 25, "variable": "ANY-Token", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4142,7 +4127,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99422, + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4156,6 +4141,8 @@ "value_start": 6, "value_end": 21, "variable": "token", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4167,7 +4154,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99416, + "ml_probability": 1.0, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4181,6 +4168,8 @@ "value_start": 11, "value_end": 26, "variable": "KEY", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4192,7 +4181,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99416, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4206,6 +4195,8 @@ "value_start": 11, "value_end": 26, "variable": "SECRET KEY", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4217,7 +4208,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99893, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4231,6 +4222,8 @@ "value_start": 7, "value_end": 22, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4242,7 +4235,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99885, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4256,6 +4249,8 @@ "value_start": 7, "value_end": 22, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4267,7 +4262,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99349, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4281,6 +4276,8 @@ "value_start": 10, "value_end": 25, "variable": "ANY_token", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4292,7 +4289,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99863, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4306,6 +4303,8 @@ "value_start": 11, "value_end": 27, "variable": "ANY.secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -4317,7 +4316,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99902, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4331,6 +4330,8 @@ "value_start": 9, "value_end": 25, "variable": "secret", + "variable_start": 2, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4342,7 +4343,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99908, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4356,6 +4357,8 @@ "value_start": 11, "value_end": 27, "variable": "ANY_secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4367,7 +4370,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99572, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4381,6 +4384,8 @@ "value_start": 7, "value_end": 23, "variable": "Token", + "variable_start": 1, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4392,7 +4397,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99809, + "ml_probability": 1.0, "rule": "API", "severity": "medium", "confidence": "moderate", @@ -4406,6 +4411,8 @@ "value_start": 11, "value_end": 27, "variable": "API Secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4417,7 +4424,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99809, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4431,6 +4438,8 @@ "value_start": 11, "value_end": 27, "variable": "Secret", + "variable_start": 4, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4442,7 +4451,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96195, + "ml_probability": 0.998, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4456,6 +4465,8 @@ "value_start": 11, "value_end": 27, "variable": "key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4467,7 +4478,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99482, + "ml_probability": 1.0, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4481,6 +4492,8 @@ "value_start": 11, "value_end": 27, "variable": "Key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4492,7 +4505,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99482, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4506,6 +4519,8 @@ "value_start": 11, "value_end": 27, "variable": "Secret Key", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4517,7 +4532,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97555, + "ml_probability": 0.994, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4531,6 +4546,8 @@ "value_start": 8, "value_end": 24, "variable": "ANY_key", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4542,7 +4559,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9969, + "ml_probability": 0.999, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4556,6 +4573,8 @@ "value_start": 14, "value_end": 30, "variable": "secret-ANYkey", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4567,7 +4586,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9969, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4581,6 +4600,8 @@ "value_start": 14, "value_end": 30, "variable": "secret-ANYkey", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4592,7 +4613,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99157, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4606,6 +4627,8 @@ "value_start": 34, "value_end": 50, "variable": "ANY_token", + "variable_start": 24, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4617,7 +4640,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99506, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4631,6 +4654,8 @@ "value_start": 13, "value_end": 29, "variable": "access_token", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4642,7 +4667,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.95206, + "ml_probability": 0.995, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -4656,6 +4681,8 @@ "value_start": 19, "value_end": 35, "variable": "Authentication key", + "variable_start": 0, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4667,7 +4694,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.95206, + "ml_probability": 0.995, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4681,6 +4708,8 @@ "value_start": 19, "value_end": 35, "variable": "key", + "variable_start": 15, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4691,86 +4720,11 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32 (master/IhqSb1Gg)", - "line_num": 1, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(master/IhqSb1Gg)", - "line_num": 2, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 3, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.85092, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.956, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { "line": "master@98.76.54.32(pw:IhqSb1Gg)", @@ -4781,6 +4735,8 @@ "value_start": 22, "value_end": 31, "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -4792,7 +4748,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.896, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4806,6 +4762,8 @@ "value_start": 42, "value_end": 50, "variable": "PW", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -4817,7 +4775,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7574, + "ml_probability": 0.943, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4831,6 +4789,8 @@ "value_start": 9, "value_end": 24, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4839,35 +4799,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", - "line_num": 6, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.972, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4881,6 +4816,8 @@ "value_start": 44, "value_end": 53, "variable": "PW", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -4889,35 +4826,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", - "line_num": 7, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4931,6 +4843,8 @@ "value_start": 49, "value_end": 57, "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -4939,35 +4853,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 11, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 29, - "value_end": 40, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4981,6 +4870,8 @@ "value_start": 62, "value_end": 71, "variable": "password", + "variable_start": 53, + "variable_end": 61, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -4989,60 +4880,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32 xxxx (master/IhqSb1Gg)", - "line_num": 14, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", - "line_num": 15, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5056,6 +4897,8 @@ "value_start": 29, "value_end": 37, "variable": "pwd", + "variable_start": 25, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5067,7 +4910,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78926, + "ml_probability": 0.933, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5081,6 +4924,8 @@ "value_start": 13, "value_end": 22, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5089,35 +4934,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(pw:IhqSb1Gg)", - "line_num": 17, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, + "ml_probability": 0.979, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5131,6 +4951,8 @@ "value_start": 15, "value_end": 24, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5139,35 +4961,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32/pw:IhqSb1Gg", - "line_num": 19, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98813, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5181,6 +4978,8 @@ "value_start": 15, "value_end": 23, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5192,7 +4991,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.972, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5206,6 +5005,8 @@ "value_start": 42, "value_end": 50, "variable": "pw", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5217,7 +5018,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.966, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5231,6 +5032,8 @@ "value_start": 47, "value_end": 55, "variable": "PWD", + "variable_start": 43, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5239,35 +5042,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 22, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 18, - "value_end": 29, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.982, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5281,6 +5059,8 @@ "value_start": 45, "value_end": 54, "variable": "pw", + "variable_start": 42, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5289,35 +5069,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 23, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.899, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5331,6 +5086,8 @@ "value_start": 40, "value_end": 49, "variable": "pw", + "variable_start": 37, + "variable_end": 39, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5342,7 +5099,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.981, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5356,6 +5113,8 @@ "value_start": 45, "value_end": 53, "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5364,35 +5123,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 25, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5406,6 +5140,8 @@ "value_start": 50, "value_end": 59, "variable": "password", + "variable_start": 41, + "variable_end": 49, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5414,35 +5150,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} master/IhqSb1Gg", - "line_num": 26, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5456,6 +5167,8 @@ "value_start": 48, "value_end": 56, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5467,7 +5180,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99714, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5481,6 +5194,8 @@ "value_start": 21, "value_end": 29, "variable": "ANY_password,default", + "variable_start": 0, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5492,7 +5207,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92567, + "ml_probability": 0.894, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -5506,6 +5221,8 @@ "value_start": 15, "value_end": 23, "variable": "Key(ANYSecret)", + "variable_start": 0, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5517,7 +5234,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92567, + "ml_probability": 0.894, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -5531,6 +5248,8 @@ "value_start": 15, "value_end": 23, "variable": "ANYSecret)", + "variable_start": 4, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5539,35 +5258,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32 ANY_PW:IhqSb1Gg", - "line_num": 34, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9819, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5581,6 +5275,8 @@ "value_start": 19, "value_end": 27, "variable": "ANY_PW", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5589,35 +5285,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(ID/PW:IhqSb1Gg)", - "line_num": 36, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, + "ml_probability": 0.938, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5631,6 +5302,8 @@ "value_start": 18, "value_end": 27, "variable": "PW", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5639,35 +5312,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", - "line_num": 38, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 0.992, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5681,6 +5329,8 @@ "value_start": 30, "value_end": 39, "variable": "pwd", + "variable_start": 26, + "variable_end": 29, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5692,7 +5342,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5706,6 +5356,8 @@ "value_start": 20, "value_end": 28, "variable": "password for master", + "variable_start": 0, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5716,24 +5368,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.984, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32(master/IhqSb1Gg)", - "line_num": 44, + "line": "id:xxxx(ANYpw:IhqSb1Ga)", + "line_num": 46, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Ga)", + "value_start": 14, + "value_end": 23, + "variable": "ANYpw", + "variable_start": 8, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -5742,20 +5396,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78926, + "ml_probability": 0.896, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:xxxx(ANYpw:IhqSb1Gg)", - "line_num": 46, + "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", + "line_num": 51, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg)", - "value_start": 14, - "value_end": 23, - "variable": "ANYpw", + "value_start": 20, + "value_end": 29, + "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5766,24 +5422,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.949, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", - "line_num": 47, + "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", + "line_num": 56, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 28, + "value_end": 36, + "variable": "PW", + "variable_start": 25, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5792,20 +5450,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99334, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", - "line_num": 47, + "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", + "line_num": 61, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 28, - "value_end": 36, - "variable": "gildong.hong@98.76.54.32,pw", + "value_start": 22, + "value_end": 30, + "variable": "ANY_pwd", + "variable_start": 14, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5816,24 +5476,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.998, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(master/IhqSb1Gg,master/IhqSb1Gg)", - "line_num": 48, + "line": "Acount name:xxxx Initial Password:IhqSb1Gg", + "line_num": 62, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 34, + "value_end": 42, + "variable": "Password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5841,24 +5503,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.953, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(master/IhqSb1Gg master/IhqSb1Gg)", - "line_num": 49, + "line": "Access wifi:xxxx(PW:IhqSb1Gg)", + "line_num": 63, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 20, + "value_end": 29, + "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -5866,24 +5530,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.998, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "xxxx:98.76.54.32(master/IhqSb1Gg)", - "line_num": 50, + "line": "-User:master -PasswordANY:IhqSb1Gg", + "line_num": 66, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 5, - "value_end": 16, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 26, + "value_end": 34, + "variable": "PasswordANY", + "variable_start": 14, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5891,24 +5557,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.998, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", - "line_num": 51, + "line": "password(default:IhqSb1Gg)", + "line_num": 68, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 17, + "value_end": 26, + "variable": "password(default", + "variable_start": 0, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -5917,20 +5585,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, + "ml_probability": 0.956, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", - "line_num": 51, + "line": "master@98.76.54.32(pw:IhqSb1Gg)", + "line_num": 73, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg)", - "value_start": 20, - "value_end": 29, - "variable": "PW", + "value_start": 22, + "value_end": 31, + "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5942,23 +5612,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7574, + "ml_probability": 0.99, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\uacc4\uc815/Password-xxxx:master/IhqSb1Gg", - "line_num": 55, + "line": "98.76.54.32 pw:IhqSb1Gg", + "line_num": 75, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "master/IhqSb1Gg", - "value_start": 17, - "value_end": 32, - "variable": "Password-xxxx", + "value": "IhqSb1Gg", + "value_start": 15, + "value_end": 23, + "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 3.0, "valid": false } } @@ -5966,24 +5638,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.976, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", - "line_num": 56, + "line": "config:xxxx,PW:IhqSb1Gg", + "line_num": 78, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 15, + "value_end": 23, + "variable": "xxxx,PW", + "variable_start": 7, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5992,20 +5666,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", - "line_num": 56, + "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 82, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 28, - "value_end": 36, - "variable": "PW", + "value_start": 43, + "value_end": 51, + "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6016,24 +5692,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.952, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "http|https://98.76.54.32/xxxx(master/IhqSb1Gg)", - "line_num": 59, + "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", + "line_num": 83, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 38, + "value_end": 46, + "variable": "pw", + "variable_start": 35, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6042,20 +5720,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.943, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", - "line_num": 61, + "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 84, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 22, - "value_end": 30, - "variable": "ANY_pwd", + "value_start": 39, + "value_end": 47, + "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6067,20 +5747,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Acount name:xxxx Initial Password:IhqSb1Gg", - "line_num": 62, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", + "line_num": 85, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 34, - "value_end": 42, - "variable": "Password", + "value_start": 43, + "value_end": 51, + "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6092,23 +5774,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.70183, + "ml_probability": 0.995, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Access wifi:xxxx(PW:IhqSb1Gg)", - "line_num": 63, + "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", + "line_num": 87, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg)", - "value_start": 20, - "value_end": 29, - "variable": "PW", + "value": "IhqSb1Gg", + "value_start": 45, + "value_end": 53, + "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 3.0, "valid": false } } @@ -6117,20 +5801,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "-User:master -PasswordANY:IhqSb1Gg", - "line_num": 66, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", + "line_num": 90, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 26, - "value_end": 34, - "variable": "PasswordANY", + "value_start": 44, + "value_end": 52, + "variable": "pw", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6142,20 +5828,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92685, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "password(default:IhqSb1Gg)", - "line_num": 68, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", + "line_num": 93, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg)", - "value_start": 17, - "value_end": 26, - "variable": "password(default", + "value_start": 45, + "value_end": 54, + "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6166,24 +5854,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.997, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(ID/PW:master/IhqSb1Gg)", - "line_num": 70, + "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", + "line_num": 94, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 46, + "value_end": 55, + "variable": "password", + "variable_start": 37, + "variable_end": 45, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -6191,24 +5881,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.995, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 73, + "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", + "line_num": 96, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 45, + "value_end": 53, + "variable": "Password", + "variable_start": 36, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6217,20 +5909,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.85092, + "ml_probability": 0.979, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 73, + "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", + "line_num": 97, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg)", - "value_start": 22, - "value_end": 31, - "variable": "pw", + "value_start": 42, + "value_end": 51, + "variable": "pass", + "variable_start": 37, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6241,24 +5935,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.994, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32,PW:IhqSb1Gg", - "line_num": 74, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 100, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 43, + "value_end": 51, + "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6267,20 +5963,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99334, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32,PW:IhqSb1Gg", - "line_num": 74, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", + "line_num": 101, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 22, - "value_end": 30, - "variable": "master@98.76.54.32,PW", + "value_start": 45, + "value_end": 53, + "variable": "pass", + "variable_start": 40, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6291,24 +5989,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 pw:IhqSb1Gg", - "line_num": 75, + "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", + "line_num": 102, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 44, + "value_end": 52, + "variable": "password", + "variable_start": 35, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6317,20 +6017,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9819, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 pw:IhqSb1Gg", - "line_num": 75, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", + "line_num": 104, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "pw", + "value_start": 49, + "value_end": 57, + "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6342,20 +6044,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99082, + "ml_probability": 0.934, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "config:xxxx,PW:IhqSb1Gg", - "line_num": 78, + "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", + "line_num": 105, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "xxxx,PW", + "value_start": 47, + "value_end": 55, + "variable": "pw", + "variable_start": 44, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6366,24 +6070,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.97, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32-->master/IhqSb1Gg", - "line_num": 81, + "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", + "line_num": 106, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 39, + "value_end": 47, + "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6391,924 +6097,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.978, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 82, + "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", + "line_num": 108, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 26, + "value_end": 35, + "variable": "pw", + "variable_start": 23, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 82, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", - "line_num": 83, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 38, - "value_end": 46, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 84, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 84, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 39, - "value_end": 47, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", - "line_num": 85, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", - "line_num": 85, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": ",pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (master/IhqSb1Gg)", - "line_num": 86, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", - "line_num": 87, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 18, - "value_end": 29, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99261, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", - "line_num": 87, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 (master/IhqSb1Gg)", - "line_num": 88, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:[1} \uacc4\uc815master/IhqSb1Gg", - "line_num": 89, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", - "line_num": 90, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", - "line_num": 90, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 44, - "value_end": 52, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (\ube44\ubc88 IhqSb1Gg)", - "line_num": 91, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password IhqSb1Gg", - "line_num": 92, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", - "line_num": 93, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", - "line_num": 93, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg)", - "value_start": 45, - "value_end": 54, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 94, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 94, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg)", - "value_start": 46, - "value_end": 55, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", - "line_num": 96, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", - "line_num": 96, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "Password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", - "line_num": 97, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", - "line_num": 97, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg)", - "value_start": 42, - "value_end": 51, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (xxxx//IhqSb1Gg)", - "line_num": 99, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 100, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 100, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", - "line_num": 101, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", - "line_num": 101, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", - "line_num": 102, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 44, - "value_end": 52, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", - "line_num": 104, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", - "line_num": 104, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 49, - "value_end": 57, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", - "line_num": 105, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 47, - "value_end": 55, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", - "line_num": 106, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg", - "value_start": 39, - "value_end": 47, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ID/PW 98.76.54.32:xxx master/IhqSb1Gg", - "line_num": 107, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 6, - "value_end": 17, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", - "line_num": 108, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78636, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", - "line_num": 108, - "path": "tests/samples/doc_various", - "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg)", - "value_start": 26, - "value_end": 35, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 2.8177111123931664, "valid": false } } @@ -7324,241 +6132,18 @@ "line_data_list": [ { "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", - "line_num": 1, - "path": "tests/samples/dropbox_api_secret_long_term", - "info": "tests/samples/dropbox_api_secret_long_term|RAW", - "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", - "value_start": 9, - "value_end": 73, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.89361507332541, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox App secret", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", - "line_num": 1, - "path": "tests/samples/dropbox_app_secret", - "info": "tests/samples/dropbox_app_secret|RAW", - "value": "wpv1jq9xwanbn3n", - "value_start": 24, - "value_end": 39, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.4565647621309536, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox OAuth2 API Access Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", - "line_num": 1, - "path": "tests/samples/dropbox_oauth_token", - "info": "tests/samples/dropbox_oauth_token|RAW", - "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", - "value_start": 15, - "value_end": 153, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.395844179446957, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dynatrace API Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", - "line_num": 1, - "path": "tests/samples/dynatrace_api.hs", - "info": "tests/samples/dynatrace_api.hs|RAW", - "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", - "value_start": 0, - "value_end": 96, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.808191506786782, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Facebook Access Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", - "line_num": 1, - "path": "tests/samples/facebook_key", - "info": "tests/samples/facebook_key|RAW", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "value_start": 28, - "value_end": 70, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", - "line_num": 1, - "path": "tests/samples/facebook_key", - "info": "tests/samples/facebook_key|RAW", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "value_start": 28, - "value_end": 70, - "variable": "GI_REO_GI_FACEBOOK_TOKEN", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Firebase Domain", - "severity": "info", - "confidence": "moderate", - "line_data_list": [ - { - "line": "test-app-domain-42.firebaseapp.com", - "line_num": 1, - "path": "tests/samples/firebase_domain", - "info": "tests/samples/firebase_domain|RAW", - "value": "test-app-domain-42.firebaseapp.com", - "value_start": 0, - "value_end": 34, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.4347510262969525, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Firebase Domain", - "severity": "info", - "confidence": "moderate", - "line_data_list": [ - { - "line": "test2.io.firebaseio.com", - "line_num": 2, - "path": "tests/samples/firebase_domain", - "info": "tests/samples/firebase_domain|RAW", - "value": "test2.io.firebaseio.com", - "value_start": 0, - "value_end": 23, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.1394163745499943, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Classic Token", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", - "line_num": 1, - "path": "tests/samples/github_classic_token", - "info": "tests/samples/github_classic_token|RAW", - "value": "ghp_00000000000000000000000000000004WZ4EQ", - "value_start": 0, - "value_end": 41, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 1.4322437698226884, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Fine-granted Token", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "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", - "line_num": 2, - "path": "tests/samples/github_fine_granted_token", - "info": "tests/samples/github_fine_granted_token|RAW", - "value": "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", - "value_start": 0, - "value_end": 93, + "line_num": 1, + "path": "tests/samples/dropbox_api_secret_long_term", + "info": "tests/samples/dropbox_api_secret_long_term|RAW", + "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", + "value_start": 9, + "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.255374790203285, + "entropy": 4.89361507332541, "valid": true } } @@ -7566,24 +6151,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99798, - "rule": "Github Old Token", - "severity": "high", - "confidence": "moderate", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Dropbox App secret", + "severity": "info", + "confidence": "weak", "line_data_list": [ { - "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", + "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "tests/samples/github_key.groovy|RAW", - "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", - "value_start": 23, - "value_end": 63, + "path": "tests/samples/dropbox_app_secret", + "info": "tests/samples/dropbox_app_secret|RAW", + "value": "wpv1jq9xwanbn3n", + "value_start": 24, + "value_end": 39, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 4.246439344671015, + "entropy": 3.4565647621309536, "valid": true } } @@ -7591,24 +6178,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99798, - "rule": "Token", - "severity": "medium", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Dropbox OAuth2 API Access Token", + "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", + "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "tests/samples/github_key.groovy|RAW", - "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", - "value_start": 23, - "value_end": 63, - "variable": "GITHUB_ACCESS_TOKEN", + "path": "tests/samples/dropbox_oauth_token", + "info": "tests/samples/dropbox_oauth_token|RAW", + "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", + "value_start": 15, + "value_end": 153, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.246439344671015, + "iterator": "BASE64_CHARS", + "entropy": 5.395844179446957, "valid": true } } @@ -7618,22 +6207,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Incoming Email Token", - "severity": "info", - "confidence": "weak", + "rule": "Dynatrace API Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "var email_t = '7e4v6v5j2nepcc8f5zvatgl9g';", + "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, - "path": "tests/samples/gitlab_email_token", - "info": "tests/samples/gitlab_email_token|RAW", - "value": "7e4v6v5j2nepcc8f5zvatgl9g", - "value_start": 15, - "value_end": 40, + "path": "tests/samples/dynatrace_api.hs", + "info": "tests/samples/dynatrace_api.hs|RAW", + "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", + "value_start": 0, + "value_end": 96, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.133660689688185, + "iterator": "BASE64_CHARS", + "entropy": 4.808191506786782, "valid": true } } @@ -7641,50 +6232,54 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab Feed Token", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.756, + "rule": "Github Old Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "feed_n = 'o9aEaH32LN618KhF7e_L'", + "line": "\\ngit_token = \"gireogicracklecrackle1231567190113413981\"\\n\\n", "line_num": 1, - "path": "tests/samples/gitlab_feed_token", - "info": "tests/samples/gitlab_feed_token|RAW", - "value": "o9aEaH32LN618KhF7e_L", - "value_start": 10, - "value_end": 30, + "path": "tests/samples/encoded_data", + "info": "tests/samples/encoded_data|ENCODED|RAW", + "value": "gireogicracklecrackle1231567190113413981", + "value_start": 15, + "value_end": 55, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.9058316901429944, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.97402442086502, + "valid": true } } ] }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab PAT", - "severity": "high", - "confidence": "strong", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.756, + "rule": "Token", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "var pat = 'glpat-a6N2pFAr2L2A6iRsA_mw';", + "line": "\\ngit_token = \"gireogicracklecrackle1231567190113413981\"\\n\\n", "line_num": 1, - "path": "tests/samples/gitlab_pat_api", - "info": "tests/samples/gitlab_pat_api|RAW", - "value": "glpat-a6N2pFAr2L2A6iRsA_mw", - "value_start": 11, - "value_end": 37, - "variable": null, + "path": "tests/samples/encoded_data", + "info": "tests/samples/encoded_data|ENCODED|RAW", + "value": "gireogicracklecrackle1231567190113413981", + "value_start": 15, + "value_end": 55, + "variable": "git_token", + "variable_start": 2, + "variable_end": 11, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.7423376242715105, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.97402442086502, + "valid": true } } ] @@ -7693,22 +6288,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Pipeline Trigger Token", + "rule": "Facebook Access Token", "severity": "high", - "confidence": "strong", + "confidence": "moderate", "line_data_list": [ { - "line": "trigger = 'glptt-33276248c9748113e978392e5c074b7f974f8683';", + "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, - "path": "tests/samples/gitlab_pipeline_trigger_token", - "info": "tests/samples/gitlab_pipeline_trigger_token|RAW", - "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", - "value_start": 11, - "value_end": 57, + "path": "tests/samples/facebook_key", + "info": "tests/samples/facebook_key|RAW", + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + "value_start": 28, + "value_end": 115, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.8494857514609038, + "iterator": "BASE64_CHARS", + "entropy": 4.936120692057916, "valid": true } } @@ -7716,24 +6313,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab Registration Runner Token", - "severity": "high", - "confidence": "strong", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, + "rule": "Token", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gitlab_runner = 'GR1348941jG6xeSsmN8DFVKoyBYu2';", + "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, - "path": "tests/samples/gitlab_registration_runner", - "info": "tests/samples/gitlab_registration_runner|RAW", - "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", - "value_start": 17, - "value_end": 46, - "variable": null, + "path": "tests/samples/facebook_key", + "info": "tests/samples/facebook_key|RAW", + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + "value_start": 28, + "value_end": 115, + "variable": "GI_REO_GI_FACEBOOK_TOKEN", + "variable_start": 0, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.582118926162056, + "entropy": 4.936120692057916, "valid": true } } @@ -7743,23 +6342,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Registration Runner Token 2023", + "rule": "Facebook App Token", "severity": "high", - "confidence": "strong", + "confidence": "moderate", "line_data_list": [ { - "line": "return \"glrt-2CR8_eVxiio-1QmzPZwa\"", - "line_num": 1, - "path": "tests/samples/gitlab_registration_runner_2023", - "info": "tests/samples/gitlab_registration_runner_2023|RAW", - "value": "glrt-2CR8_eVxiio-1QmzPZwa", - "value_start": 8, - "value_end": 33, + "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", + "line_num": 2, + "path": "tests/samples/facebook_key", + "info": "tests/samples/facebook_key|RAW", + "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", + "value_start": 0, + "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.006593447001756, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.2089099270924217, + "valid": true } } ] @@ -7768,22 +6369,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google API Key", - "severity": "high", + "rule": "Firebase Domain", + "severity": "info", "confidence": "moderate", "line_data_list": [ { - "line": "AIzaGiReoG-CrackleCrackle12315618_12315", + "line": "test-app-domain-42.firebaseapp.com", "line_num": 1, - "path": "tests/samples/google_api_key.toml", - "info": "tests/samples/google_api_key.toml|RAW", - "value": "AIzaGiReoG-CrackleCrackle12315618_12315", + "path": "tests/samples/firebase_domain", + "info": "tests/samples/firebase_domain|RAW", + "value": "test-app-domain-42.firebaseapp.com", "value_start": 0, - "value_end": 39, + "value_end": 34, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.165196181720608, + "entropy": 3.4347510262969525, "valid": true } } @@ -7793,39 +6396,26 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google Multi", - "severity": "high", + "rule": "Firebase Domain", + "severity": "info", "confidence": "moderate", "line_data_list": [ { - "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "line": "test2.io.firebaseio.com", "line_num": 2, - "path": "tests/samples/google_multi", - "info": "tests/samples/google_multi|RAW", - "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "path": "tests/samples/firebase_domain", + "info": "tests/samples/firebase_domain|RAW", + "value": "test2.io.firebaseio.com", "value_start": 0, - "value_end": 72, + "value_end": 23, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.531537327540733, + "iterator": "BASE36_CHARS", + "entropy": 3.1394163745499943, "valid": true } - }, - { - "line": "4L2QMyTm6Rr0o46ytGiReoG1", - "line_num": 4, - "path": "tests/samples/google_multi", - "info": "tests/samples/google_multi|RAW", - "value": "4L2QMyTm6Rr0o46ytGiReoG1", - "value_start": 0, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.084962500721157, - "valid": false - } } ] }, @@ -7833,37 +6423,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google Multi", + "rule": "Github Classic Token", "severity": "high", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ - { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", - "info": "tests/samples/google_multi|RAW", - "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", - "value_start": 6, - "value_end": 78, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.531537327540733, - "valid": true - } - }, - { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", - "info": "tests/samples/google_multi|RAW", - "value": "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", - "value_start": 90, - "value_end": 125, + { + "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", + "line_num": 1, + "path": "tests/samples/github_classic_token", + "info": "tests/samples/github_classic_token|RAW", + "value": "ghp_00000000000000000000000000000004WZ4EQ", + "value_start": 0, + "value_end": 41, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.436181130262395, + "entropy": 1.4322437698226884, "valid": false } } @@ -7873,47 +6450,51 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Secret", + "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", - "info": "tests/samples/google_multi|RAW", - "value": "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", - "value_start": 90, - "value_end": 125, + "line": "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", + "line_num": 2, + "path": "tests/samples/github_fine_granted_token", + "info": "tests/samples/github_fine_granted_token|RAW", + "value": "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", + "value_start": 0, + "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.436181130262395, - "valid": false + "entropy": 5.255374790203285, + "valid": true } } ] }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Google OAuth Access Token", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Github Old Token", "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", "line_num": 1, - "path": "tests/samples/google_oauth_key", - "info": "tests/samples/google_oauth_key|RAW", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, + "path": "tests/samples/github_key.groovy", + "info": "tests/samples/github_key.groovy|RAW", + "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", + "value_start": 23, + "value_end": 63, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, + "entropy": 4.246439344671015, "valid": true } } @@ -7921,24 +6502,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Auth", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", "line_num": 1, - "path": "tests/samples/google_oauth_key", - "info": "tests/samples/google_oauth_key|RAW", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, - "variable": "google_oauth_key", + "path": "tests/samples/github_key.groovy", + "info": "tests/samples/github_key.groovy|RAW", + "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", + "value_start": 23, + "value_end": 63, + "variable": "GITHUB_ACCESS_TOKEN", + "variable_start": 0, + "variable_end": 19, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, + "entropy": 4.246439344671015, "valid": true } } @@ -7948,22 +6531,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", - "confidence": "moderate", + "rule": "Gitlab Incoming Email Token", + "severity": "info", + "confidence": "weak", "line_data_list": [ { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line": "var email_t = '7e4v6v5j2nepcc8f5zvatgl9g';", "line_num": 1, - "path": "tests/samples/google_oauth_key", - "info": "tests/samples/google_oauth_key|RAW", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, - "variable": "google_oauth_key", + "path": "tests/samples/gitlab_email_token", + "info": "tests/samples/gitlab_email_token|RAW", + "value": "7e4v6v5j2nepcc8f5zvatgl9g", + "value_start": 15, + "value_end": 40, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, + "entropy": 4.133660689688185, "valid": true } } @@ -7973,23 +6558,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Access Policy Token", - "severity": "high", - "confidence": "strong", + "rule": "Gitlab Feed Token", + "severity": "info", + "confidence": "weak", "line_data_list": [ { - "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", + "line": "feed_n = 'o9aEaH32LN618KhF7e_L'", "line_num": 1, - "path": "tests/samples/grafana_access_policy_token", - "info": "tests/samples/grafana_access_policy_token|RAW", - "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", - "value_start": 18, - "value_end": 130, + "path": "tests/samples/gitlab_feed_token", + "info": "tests/samples/gitlab_feed_token|RAW", + "value": "o9aEaH32LN618KhF7e_L", + "value_start": 10, + "value_end": 30, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.097632476604024, - "valid": true + "entropy": 3.9058316901429944, + "valid": false } } ] @@ -7998,22 +6585,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Provisioned API Key", + "rule": "Gitlab PAT", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line": "var pat = 'glpat-a6N2pFAr2L2A6iRsA_mw';", "line_num": 1, - "path": "tests/samples/grafana_provisioned_api_key", - "info": "tests/samples/grafana_provisioned_api_key|RAW", - "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", + "path": "tests/samples/gitlab_pat_api", + "info": "tests/samples/gitlab_pat_api|RAW", + "value": "glpat-a6N2pFAr2L2A6iRsA_mw", "value_start": 11, - "value_end": 107, + "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.8153130511409934, + "entropy": 3.7423376242715105, "valid": false } } @@ -8023,23 +6612,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", + "rule": "Gitlab Pipeline Trigger Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line": "trigger = 'glptt-33276248c9748113e978392e5c074b7f974f8683';", "line_num": 1, - "path": "tests/samples/grafana_provisioned_api_key", - "info": "tests/samples/grafana_provisioned_api_key|RAW", - "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", + "path": "tests/samples/gitlab_pipeline_trigger_token", + "info": "tests/samples/gitlab_pipeline_trigger_token|RAW", + "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", "value_start": 11, - "value_end": 107, + "value_end": 57, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.8153130511409934, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.8494857514609038, + "valid": true } } ] @@ -8048,22 +6639,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Heroku API Key", + "rule": "Gitlab Registration Runner Token", "severity": "high", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { - "line": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", + "line": "gitlab_runner = 'GR1348941jG6xeSsmN8DFVKoyBYu2';", "line_num": 1, - "path": "tests/samples/heroku_api.toml", - "info": "tests/samples/heroku_api.toml|RAW", - "value": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", - "value_start": 0, - "value_end": 37, + "path": "tests/samples/gitlab_registration_runner", + "info": "tests/samples/gitlab_registration_runner|RAW", + "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", + "value_start": 17, + "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.48037367471734, + "iterator": "BASE64_CHARS", + "entropy": 4.582118926162056, "valid": true } } @@ -8073,22 +6666,51 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Instagram Access Token", + "rule": "Gitlab Registration Runner Token 2023", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", + "line": "return \"glrt-2CR8_eVxiio-1QmzPZwa\"", "line_num": 1, - "path": "tests/samples/instagram_access_token", - "info": "tests/samples/instagram_access_token|RAW", - "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", - "value_start": 0, - "value_end": 162, + "path": "tests/samples/gitlab_registration_runner_2023", + "info": "tests/samples/gitlab_registration_runner_2023|RAW", + "value": "glrt-2CR8_eVxiio-1QmzPZwa", + "value_start": 8, + "value_end": 33, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.231644837540696, + "entropy": 4.006593447001756, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Google API Key", + "severity": "high", + "confidence": "moderate", + "line_data_list": [ + { + "line": "AIzaGiReoG-CrackleCrackle12315618_12315", + "line_num": 1, + "path": "tests/samples/google_api_key.toml", + "info": "tests/samples/google_api_key.toml|RAW", + "value": "AIzaGiReoG-CrackleCrackle12315618_12315", + "value_start": 0, + "value_end": 39, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.165196181720608, "valid": true } } @@ -8098,22 +6720,41 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google Multi", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "100.64.0.0/10", - "line_num": 13, - "path": "tests/samples/ipv4", - "info": "tests/samples/ipv4|RAW", - "value": "100.64.0.0", + "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "line_num": 2, + "path": "tests/samples/google_multi", + "info": "tests/samples/google_multi|RAW", + "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "value_start": 0, + "value_end": 72, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.531537327540733, + "valid": true + } + }, + { + "line": "4L2QMyTm6Rr0o46ytGiReoG1", + "line_num": 4, + "path": "tests/samples/google_multi", + "info": "tests/samples/google_multi|RAW", + "value": "4L2QMyTm6Rr0o46ytGiReoG1", "value_start": 0, - "value_end": 10, + "value_end": 24, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.5253496664211537, + "entropy": 4.084962500721157, "valid": false } } @@ -8123,47 +6764,41 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google Multi", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "100.64.0.0\u2013100.127.255.255", - "line_num": 14, - "path": "tests/samples/ipv4", - "info": "tests/samples/ipv4|RAW", - "value": "100.127.255.255", - "value_start": 11, - "value_end": 26, + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", + "info": "tests/samples/google_multi|RAW", + "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", + "value_start": 6, + "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.008519976342584, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 4.531537327540733, + "valid": true } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ + }, { - "line": "100.64.0.0\u2013100.127.255.255", - "line_num": 14, - "path": "tests/samples/ipv4", - "info": "tests/samples/ipv4|RAW", - "value": "100.64.0.0", - "value_start": 0, - "value_end": 10, + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", + "info": "tests/samples/google_multi|RAW", + "value": "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", + "value_start": 90, + "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.5253496664211537, + "entropy": 4.436181130262395, "valid": false } } @@ -8173,22 +6808,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google OAuth Secret", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.0.0.0\u2013192.0.0.255", - "line_num": 22, - "path": "tests/samples/ipv4", - "info": "tests/samples/ipv4|RAW", - "value": "192.0.0.255", - "value_start": 10, - "value_end": 21, + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", + "info": "tests/samples/google_multi|RAW", + "value": "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", + "value_start": 90, + "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.9704957226453073, + "entropy": 4.436181130262395, "valid": false } } @@ -8198,23 +6835,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google OAuth Access Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "192.88.99.0/24", - "line_num": 25, - "path": "tests/samples/ipv4", - "info": "tests/samples/ipv4|RAW", - "value": "192.88.99.0", - "value_start": 0, - "value_end": 11, + "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line_num": 1, + "path": "tests/samples/google_oauth_key", + "info": "tests/samples/google_oauth_key|RAW", + "value": "ya29.gi_reo_gi_crackle_ln22", + "value_start": 20, + "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 1.9018695860849921, - "valid": false + "entropy": 3.1797273164975133, + "valid": true } } ] @@ -8223,23 +6862,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Grafana Access Policy Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.88.99.0\u2013192.88.99.255", - "line_num": 26, - "path": "tests/samples/ipv4", - "info": "tests/samples/ipv4|RAW", - "value": "192.88.99.0", - "value_start": 0, - "value_end": 11, + "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", + "line_num": 1, + "path": "tests/samples/grafana_access_policy_token", + "info": "tests/samples/grafana_access_policy_token|RAW", + "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", + "value_start": 18, + "value_end": 130, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 1.9018695860849921, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.097632476604024, + "valid": true } } ] @@ -8248,22 +6889,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Grafana Provisioned API Key", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.88.99.0\u2013192.88.99.255", - "line_num": 26, - "path": "tests/samples/ipv4", - "info": "tests/samples/ipv4|RAW", - "value": "192.88.99.255", - "value_start": 12, - "value_end": 25, + "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line_num": 1, + "path": "tests/samples/grafana_provisioned_api_key", + "info": "tests/samples/grafana_provisioned_api_key|RAW", + "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", + "value_start": 11, + "value_end": 107, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.019193052249804, + "entropy": 3.8153130511409934, "valid": false } } @@ -8273,23 +6916,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Grafana Service Account Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2004:5678::9324", - "line_num": 12, - "path": "tests/samples/ipv6", - "info": "tests/samples/ipv6|RAW", - "value": "2004:5678::9324", + "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", + "line_num": 1, + "path": "tests/samples/grafana_service_accounts", + "info": "tests/samples/grafana_service_accounts|RAW", + "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, - "value_end": 15, + "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.725512476486815, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 4.52211252299684, + "valid": true } } ] @@ -8298,23 +6943,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Hashicorp Terraform Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2004::5678:9", - "line_num": 13, - "path": "tests/samples/ipv6", - "info": "tests/samples/ipv6|RAW", - "value": "2004::5678:9", + "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", + "line_num": 1, + "path": "tests/samples/hashicorp_terraform", + "info": "tests/samples/hashicorp_terraform|RAW", + "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, - "value_end": 12, + "value_end": 90, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.5220552088742005, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.348551883097512, + "valid": true } } ] @@ -8323,23 +6970,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", - "confidence": "strong", + "rule": "Heroku API Key", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "2041:0000:140F::875B:131B", - "line_num": 14, - "path": "tests/samples/ipv6", - "info": "tests/samples/ipv6|RAW", - "value": "2041:0000:140F::875B:131B", + "line": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", + "line_num": 1, + "path": "tests/samples/heroku_api.toml", + "info": "tests/samples/heroku_api.toml|RAW", + "value": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", "value_start": 0, - "value_end": 25, + "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "HEX_CHARS", - "entropy": 2.6146939516467023, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.48037367471734, + "valid": true } } ] @@ -8348,23 +6997,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Instagram Access Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2041:0:140F::875B:131B", - "line_num": 15, - "path": "tests/samples/ipv6", - "info": "tests/samples/ipv6|RAW", - "value": "2041:0:140F::875B:131B", + "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", + "line_num": 1, + "path": "tests/samples/instagram_access_token", + "info": "tests/samples/instagram_access_token|RAW", + "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, - "value_end": 22, + "value_end": 162, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "HEX_CHARS", - "entropy": 2.684338637030481, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.231644837540696, + "valid": true } } ] @@ -8372,7 +7023,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8386,6 +7037,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8073549220576046, @@ -8411,6 +7064,8 @@ "value_start": 0, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.288909765557392, @@ -8436,6 +7091,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.353940312186129, @@ -8461,6 +7118,8 @@ "value_start": 0, "value_end": 16, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.625, @@ -8486,6 +7145,8 @@ "value_start": 8, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.606936732175321, @@ -8496,24 +7157,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99105, + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, "rule": "JSON Web Token", "severity": "medium", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { - "line": "$payload = 'eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlEJOpS'", + "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, - "path": "tests/samples/json_web_token.hs", - "info": "tests/samples/json_web_token.hs|RAW", - "value": "eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlEJOpS", - "value_start": 12, - "value_end": 60, + "path": "tests/samples/json_web_token", + "info": "tests/samples/json_web_token|RAW", + "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", + "value_start": 10, + "value_end": 75, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.520488802699322, + "entropy": 4.790963630103494, "valid": true } } @@ -8522,23 +7185,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99911, - "rule": "Key", + "ml_probability": 0.998, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "prKeyValid=LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU==", - "line_num": 1, + "line": "secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", + "line_num": 2, "path": "tests/samples/key.hs", "info": "tests/samples/key.hs|RAW", - "value": "LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU==", - "value_start": 11, - "value_end": 335, - "variable": "prKeyValid", + "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", + "value_start": 32, + "value_end": 72, + "variable": "secret_looks_like_linux_path_1", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.428808109703668, + "entropy": 4.8341837197791895, "valid": true } } @@ -8547,23 +7212,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99907, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", - "line_num": 2, + "line": "secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", + "line_num": 3, "path": "tests/samples/key.hs", "info": "tests/samples/key.hs|RAW", - "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", + "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", "value_start": 32, "value_end": 72, - "variable": "secret_looks_like_linux_path_1", + "variable": "secret_looks_like_linux_path_2", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.8341837197791895, + "entropy": 4.784183719779189, "valid": true } } @@ -8572,23 +7239,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99958, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", - "line_num": 3, + "line": "secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", + "line_num": 4, "path": "tests/samples/key.hs", "info": "tests/samples/key.hs|RAW", - "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", + "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", "value_start": 32, "value_end": 72, - "variable": "secret_looks_like_linux_path_2", + "variable": "secret_looks_like_linux_path_3", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.784183719779189, + "entropy": 4.8341837197791895, "valid": true } } @@ -8597,23 +7266,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99955, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", - "line_num": 4, + "line": "secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", + "line_num": 5, "path": "tests/samples/key.hs", "info": "tests/samples/key.hs|RAW", - "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", + "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", "value_start": 32, "value_end": 72, - "variable": "secret_looks_like_linux_path_3", + "variable": "secret_looks_like_linux_path__", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.8341837197791895, + "entropy": 4.8530559073332755, "valid": true } } @@ -8622,7 +7293,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98676, + "ml_probability": 0.996, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -8636,6 +7307,8 @@ "value_start": 32, "value_end": 87, "variable": "key", + "variable_start": 28, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.962822440640043, @@ -8647,7 +7320,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98973, + "ml_probability": 0.999, "rule": "API", "severity": "medium", "confidence": "moderate", @@ -8661,6 +7334,8 @@ "value_start": 11, "value_end": 46, "variable": "api_key", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.332592430684724, @@ -8672,7 +7347,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98973, + "ml_probability": 0.999, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -8686,6 +7361,8 @@ "value_start": 11, "value_end": 46, "variable": "api_key", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.332592430684724, @@ -8711,6 +7388,8 @@ "value_start": 13, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.615822531364292, @@ -8736,6 +7415,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.484377779059832, @@ -8761,6 +7442,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8786,6 +7469,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8801,6 +7486,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8812,7 +7499,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99792, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -8826,6 +7513,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8851,6 +7540,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8876,6 +7567,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8891,6 +7584,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8902,7 +7597,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99792, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -8916,6 +7611,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8927,7 +7624,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9812, + "ml_probability": 0.998, "rule": "Nonce", "severity": "medium", "confidence": "moderate", @@ -8941,6 +7638,8 @@ "value_start": 9, "value_end": 41, "variable": "nonce", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.390319531114783, @@ -8966,6 +7665,8 @@ "value_start": 5, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.561286684176785, @@ -8983,67 +7684,46 @@ "confidence": "strong", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, "path": "tests/samples/open_ai_token", "info": "tests/samples/open_ai_token|RAW", - "value": "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", + "value": "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", "value_start": 0, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.047085443409471, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98995, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "my_pw: nCzx8A8#!", - "line_num": 2, - "path": "tests/samples/pass_valid", - "info": "tests/samples/pass_valid|RAW", - "value": "nCzx8A8#!", - "value_start": 7, - "value_end": 16, - "variable": "my_pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.2432750011217983, - "valid": false + "entropy": 5.115027050910027, + "valid": true } } ] }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99448, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "OpenAI Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "val password: String = \"exord13Paw64\", // scala", + "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", "line_num": 3, - "path": "tests/samples/pass_valid", - "info": "tests/samples/pass_valid|RAW", - "value": "exord13Paw64", - "value_start": 24, - "value_end": 36, - "variable": "password", + "path": "tests/samples/open_ai_token", + "info": "tests/samples/open_ai_token|RAW", + "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", + "value_start": 0, + "value_end": 56, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.2862156256610597, + "iterator": "BASE64_CHARS", + "entropy": 5.086469255159772, "valid": true } } @@ -9052,23 +7732,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92289, + "ml_probability": 0.98, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "def connect(passwd: str = \"cq2tPr1a2\"): # python default arg", - "line_num": 4, + "line": "my_pw: nCzx8A8#!", + "line_num": 2, "path": "tests/samples/pass_valid", "info": "tests/samples/pass_valid|RAW", - "value": "cq2tPr1a2", - "value_start": 27, - "value_end": 36, - "variable": "passwd", + "value": "nCzx8A8#!", + "value_start": 7, + "value_end": 16, + "variable": "my_pw", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.9477027792200903, + "entropy": 2.2432750011217983, "valid": false } } @@ -9077,24 +7759,26 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96972, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "if passworsd == \"q4c1a2oPd\": # __eq__ separator", - "line_num": 5, + "line": "val password: String = \"exord13Paw64\", // scala", + "line_num": 3, "path": "tests/samples/pass_valid", - "info": "tests/samples/pass_valid|RAW", - "value": "q4c1a2oPd", - "value_start": 17, - "value_end": 26, - "variable": "passworsd", + "info": "tests/samples/pass_valid|RAW", + "value": "exord13Paw64", + "value_start": 24, + "value_end": 36, + "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.169925001442312, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.2862156256610597, + "valid": true } } ] @@ -9102,7 +7786,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99646, + "ml_probability": 0.904, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9116,6 +7800,8 @@ "value_start": 17, "value_end": 26, "variable": "passworsd", + "variable_start": 3, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.169925001442312, @@ -9127,7 +7813,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99933, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9141,6 +7827,8 @@ "value_start": 9, "value_end": 23, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.521640636343319, @@ -9152,7 +7840,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99674, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9166,6 +7854,8 @@ "value_start": 20, "value_end": 30, "variable": "gi_reo_gi_passwd", + "variable_start": 0, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.121928094887362, @@ -9177,7 +7867,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99674, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9191,6 +7881,8 @@ "value_start": 58, "value_end": 68, "variable": "password_confirmation", + "variable_start": 33, + "variable_end": 54, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.121928094887362, @@ -9202,7 +7894,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.66622, + "ml_probability": 0.818, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9216,6 +7908,8 @@ "value_start": 12, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, @@ -9227,7 +7921,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9241,6 +7935,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8073549220576046, @@ -9252,73 +7948,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "+ \"password\": \"dkajco1\"", - "line_num": 10, - "path": "tests/samples/password_utf16.patch", - "info": "tests/samples/password_utf16.patch|RAW", - "value": "dkajco1", - "value_start": 16, - "value_end": 23, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8073549220576046, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99077, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "+ \"password\": \"dkajc\u00f61\"", - "line_num": 9, - "path": "tests/samples/password_western.patch", - "info": "tests/samples/password_western.patch|RAW", - "value": "dkajc\u00f61", - "value_start": 16, - "value_end": 23, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.4063042189065182, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.70641, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "password = \"cackle_!\"", + "line": "password = \"MYPSWRD!@#$%^&*\"", "line_num": 1, - "path": "tests/samples/passwords.tar.bz2", - "info": "tests/samples/passwords.tar.bz2|BZIP2|tests/samples/passwords.tar|TAR|./password|RAW", - "value": "cackle_!", + "path": "tests/samples/password.tfvars", + "info": "tests/samples/password.tfvars|RAW", + "value": "MYPSWRD!@#$%^&*", "value_start": 12, - "value_end": 20, + "value_end": 27, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.0, + "entropy": 1.8232156112839757, "valid": false } } @@ -9327,23 +7975,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.77103, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "password = \"cackle_1!\"", - "line_num": 1, - "path": "tests/samples/passwords.tar.bz2", - "info": "tests/samples/passwords.tar.bz2|BZIP2|tests/samples/passwords.tar|TAR|./1/password|RAW", - "value": "cackle_1!", - "value_start": 12, - "value_end": 21, + "line": "+ \"password\": \"dkajco1\"", + "line_num": 10, + "path": "tests/samples/password_utf16.patch", + "info": "tests/samples/password_utf16.patch|RAW", + "value": "dkajco1", + "value_start": 16, + "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.2432750011217983, + "entropy": 2.8073549220576046, "valid": false } } @@ -9352,23 +8002,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.68544, + "ml_probability": 0.963, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "password = \"cackle_2!\"", - "line_num": 1, - "path": "tests/samples/passwords.tar.bz2", - "info": "tests/samples/passwords.tar.bz2|BZIP2|tests/samples/passwords.tar|TAR|./1/2/password|RAW", - "value": "cackle_2!", - "value_start": 12, - "value_end": 21, + "line": "+ \"password\": \"dkajc\u00f61\"", + "line_num": 9, + "path": "tests/samples/password_western.patch", + "info": "tests/samples/password_western.patch|RAW", + "value": "dkajc\u00f61", + "value_start": 16, + "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.2432750011217983, + "entropy": 2.4063042189065182, "valid": false } } @@ -9391,6 +8043,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.125814952938166, @@ -9408,14 +8062,16 @@ "confidence": "strong", "line_data_list": [ { - "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", - "line_num": 2, + "line": "-----BEGIN RSA PRIVATE KEY-----", + "line_num": 1, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", "value": "-----BEGIN RSA PRIVATE KEY-----", - "value_start": 13, - "value_end": 44, + "value_start": 0, + "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.529698260800009, @@ -9423,217 +8079,206 @@ } }, { - "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", - "line_num": 3, + "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", + "line_num": 2, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+", - "value_start": 1, - "value_end": 103, + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", + "value_start": 0, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.429600283437103, + "entropy": 5.388924717191689, "valid": true } }, { - "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", - "line_num": 4, + "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", + "line_num": 3, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o", - "value_start": 4, - "value_end": 104, + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", + "value_start": 0, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.307627100346911, + "entropy": 5.213332901823973, "valid": true } }, { - "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", - "line_num": 5, + "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", + "line_num": 4, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr", - "value_start": 3, - "value_end": 102, + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", + "value_start": 0, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.391947595190542, + "entropy": 5.325046388609145, "valid": true } }, { - "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", - "line_num": 6, + "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", + "line_num": 5, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC", - "value_start": 3, - "value_end": 86, + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", + "value_start": 0, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.410712925114303, + "entropy": 5.267278500114894, "valid": true } }, { - "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", - "line_num": 7, + "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", + "line_num": 6, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV", - "value_start": 4, - "value_end": 90, + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", + "value_start": 0, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.417032341684991, + "entropy": 5.293594289588578, "valid": true } }, { - "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", - "line_num": 8, + "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", + "line_num": 7, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B", + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, - "value_end": 106, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.497697548960288, + "entropy": 5.405307776373748, "valid": true } }, { - "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", - "line_num": 9, + "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", + "line_num": 8, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB", - "value_start": 1, - "value_end": 110, + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", + "value_start": 0, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.30959588168204, + "entropy": 5.372541658009631, "valid": true } }, { - "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", - "line_num": 10, + "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", + "line_num": 9, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "Uaxk9J5Th8BXPyC1mclPMS7J", + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, - "value_end": 24, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.418295834054489, - "valid": false + "entropy": 5.308663329427085, + "valid": true } }, { - "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", - "line_num": 11, + "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", + "line_num": 10, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----", + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, - "value_end": 59, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.8721063510981755, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "PEM Private Key", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", - "line_num": 14, - "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", - "value_start": 16, - "value_end": 262, + "value_end": 76, "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.884128060579619, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "PEM Private Key", - "severity": "high", - "confidence": "strong", - "line_data_list": [ + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.425173236956998, + "valid": true + } + }, { - "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", - "line_num": 27, + "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", + "line_num": 11, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, - "value_end": 47, + "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0185646866544076, - "valid": false + "entropy": 5.107555270017291, + "valid": true } }, { - "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", - "line_num": 28, + "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", + "line_num": 12, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, - "value_end": 120, + "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.2083460372948154, + "iterator": "BASE64_CHARS", + "entropy": 5.0705380354071785, "valid": true } }, { - "line": "-----END LOW ENTROPY PRIVATE KEY-----", - "line_num": 29, + "line": "-----END RSA PRIVATE KEY-----", + "line_num": 13, "path": "tests/samples/pem_key", - "info": "tests/samples/pem_key|RAW", - "value": "-----END LOW ENTROPY PRIVATE KEY-----", + "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", + "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, - "value_end": 37, + "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.6977683083639423, + "entropy": 2.3783727041337137, "valid": false } } @@ -9650,12 +8295,14 @@ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.529698260800009, @@ -9665,12 +8312,14 @@ { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.388924717191689, @@ -9680,12 +8329,14 @@ { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.213332901823973, @@ -9695,12 +8346,14 @@ { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.325046388609145, @@ -9710,12 +8363,14 @@ { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.267278500114894, @@ -9725,12 +8380,14 @@ { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.293594289588578, @@ -9740,12 +8397,14 @@ { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.405307776373748, @@ -9755,12 +8414,14 @@ { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.372541658009631, @@ -9770,12 +8431,14 @@ { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.308663329427085, @@ -9785,12 +8448,14 @@ { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.425173236956998, @@ -9800,12 +8465,14 @@ { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.107555270017291, @@ -9815,12 +8482,14 @@ { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.0705380354071785, @@ -9830,12 +8499,14 @@ { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3783727041337137, @@ -9848,252 +8519,265 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "PayPal Braintree Access Token", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", - "line_num": 1, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|.git/paypal_key|RAW", - "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", - "value_start": 0, - "value_end": 73, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.125814952938166, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Jfrog Token", + "rule": "PEM Private Key", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", - "line_num": 1, - "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", - "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", - "value_start": 0, - "value_end": 64, + "line": "str value = \"-----BEGIN RSA PRIVATE KEY-----\\n\" +", + "line_num": 2, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "-----BEGIN RSA PRIVATE KEY-----", + "value_start": 13, + "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.288909765557392, - "valid": true + "entropy": 2.529698260800009, + "valid": false } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "PEM Private Key", - "severity": "high", - "confidence": "strong", - "line_data_list": [ + }, { - "line": "-----BEGIN RSA PRIVATE KEY-----", - "line_num": 1, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "-----BEGIN RSA PRIVATE KEY-----", - "value_start": 0, - "value_end": 31, + "line": "\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+ \\n\"", + "line_num": 3, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+", + "value_start": 1, + "value_end": 103, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.529698260800009, - "valid": false + "entropy": 5.429600283437103, + "valid": true } }, { - "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", - "line_num": 2, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", - "value_start": 0, - "value_end": 76, + "line": "\t+ \"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\r \\n\"", + "line_num": 4, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o", + "value_start": 4, + "value_end": 104, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.388924717191689, + "entropy": 5.307627100346911, "valid": true } }, { - "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", - "line_num": 3, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", - "value_start": 0, - "value_end": 76, + "line": "\" CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr \"", + "line_num": 5, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr", + "value_start": 3, + "value_end": 102, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.213332901823973, + "entropy": 5.391947595190542, "valid": true } }, { - "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", - "line_num": 4, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", - "value_start": 0, - "value_end": 76, + "line": "\t\t\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC \\\\", + "line_num": 6, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC", + "value_start": 3, + "value_end": 86, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.325046388609145, + "entropy": 5.410712925114303, "valid": true } }, { - "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", - "line_num": 5, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", - "value_start": 0, - "value_end": 76, + "line": "\"\"\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \"\"\" +", + "line_num": 7, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV", + "value_start": 4, + "value_end": 90, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.267278500114894, + "entropy": 5.417032341684991, "valid": true } }, { - "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", - "line_num": 6, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", + "line": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\r\\n", + "line_num": 8, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B", "value_start": 0, - "value_end": 76, + "value_end": 106, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.293594289588578, + "entropy": 5.497697548960288, "valid": true } }, { - "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", - "line_num": 7, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", - "value_start": 0, - "value_end": 76, + "line": "\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\", + "line_num": 9, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB", + "value_start": 1, + "value_end": 110, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.405307776373748, + "entropy": 5.30959588168204, "valid": true } }, { - "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", - "line_num": 8, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", + "line": "Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\r5micHFiMI7/IcVZ4\\n", + "line_num": 10, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "Uaxk9J5Th8BXPyC1mclPMS7J", "value_start": 0, - "value_end": 76, + "value_end": 24, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.372541658009631, - "valid": true + "entropy": 4.418295834054489, + "valid": false } }, { - "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", - "line_num": 9, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", + "line": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----\"\"\";", + "line_num": 11, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\n-----END RSA PRIVATE KEY-----", "value_start": 0, - "value_end": 76, + "value_end": 59, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.308663329427085, - "valid": true + "entropy": 3.8721063510981755, + "valid": false } - }, + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "PEM Private Key", + "severity": "high", + "confidence": "strong", + "line_data_list": [ { - "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", - "line_num": 10, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", - "value_start": 0, - "value_end": 76, + "line": "char pk[] = \"\\\\n-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----\\n\";", + "line_num": 14, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "-----BEGIN EC PRIVATE KEY-----\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\r\\r\\n\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\n-----END EC PRIVATE KEY-----", + "value_start": 16, + "value_end": 262, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.425173236956998, + "entropy": 4.884128060579619, "valid": true } - }, + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "PEM Private Key", + "severity": "high", + "confidence": "strong", + "line_data_list": [ { - "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", - "line_num": 11, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", + "line": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", + "line_num": 27, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----", "value_start": 0, - "value_end": 76, + "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.107555270017291, - "valid": true + "entropy": 3.0185646866544076, + "valid": false } }, { - "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", - "line_num": 12, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", + "line": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", + "line_num": 28, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==", "value_start": 0, - "value_end": 52, + "value_end": 120, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.0705380354071785, + "iterator": "BASE36_CHARS", + "entropy": 3.2083460372948154, "valid": true } }, { - "line": "-----END RSA PRIVATE KEY-----", - "line_num": 13, - "path": "tests/samples/pem_key.bz2", - "info": "tests/samples/pem_key.bz2|BZIP2|tests/samples/pem_key|RAW", - "value": "-----END RSA PRIVATE KEY-----", + "line": "-----END LOW ENTROPY PRIVATE KEY-----", + "line_num": 29, + "path": "tests/samples/pem_key", + "info": "tests/samples/pem_key|RAW", + "value": "-----END LOW ENTROPY PRIVATE KEY-----", "value_start": 0, - "value_end": 29, + "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.3783727041337137, + "entropy": 2.6977683083639423, "valid": false } } @@ -10110,12 +8794,14 @@ { "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.529698260800009, @@ -10125,12 +8811,14 @@ { "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.388924717191689, @@ -10140,12 +8828,14 @@ { "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.213332901823973, @@ -10155,12 +8845,14 @@ { "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.325046388609145, @@ -10170,12 +8862,14 @@ { "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.267278500114894, @@ -10185,12 +8879,14 @@ { "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.293594289588578, @@ -10200,12 +8896,14 @@ { "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.405307776373748, @@ -10215,12 +8913,14 @@ { "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.372541658009631, @@ -10230,12 +8930,14 @@ { "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.308663329427085, @@ -10245,12 +8947,14 @@ { "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.425173236956998, @@ -10260,12 +8964,14 @@ { "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.107555270017291, @@ -10275,12 +8981,14 @@ { "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.0705380354071785, @@ -10290,12 +8998,14 @@ { "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, - "path": "tests/samples/pem_key.gz", - "info": "tests/samples/pem_key.gz|GZIP|tests/samples/pem_key|RAW", + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3783727041337137, @@ -10304,6 +9014,60 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "PayPal Braintree Access Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", + "line_num": 1, + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|.git/paypal_key|RAW", + "value": "access_token$production$gireogi121451781$abcaeaabadef01134517891121451781", + "value_start": 0, + "value_end": 73, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 4.125814952938166, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Jfrog Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", + "line_num": 1, + "path": "tests/samples/pem_key.apk", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "value": "cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow", + "value_start": 0, + "value_end": 64, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.288909765557392, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -10321,6 +9085,8 @@ "value_start": 0, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.529698260800009, @@ -10336,6 +9102,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.388924717191689, @@ -10351,6 +9119,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.213332901823973, @@ -10366,6 +9136,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.325046388609145, @@ -10381,6 +9153,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.267278500114894, @@ -10396,6 +9170,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.293594289588578, @@ -10411,6 +9187,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.405307776373748, @@ -10426,6 +9204,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.372541658009631, @@ -10441,6 +9221,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.308663329427085, @@ -10456,6 +9238,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.425173236956998, @@ -10471,6 +9255,8 @@ "value_start": 0, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.107555270017291, @@ -10486,6 +9272,8 @@ "value_start": 0, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.0705380354071785, @@ -10501,6 +9289,8 @@ "value_start": 0, "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3783727041337137, @@ -10526,6 +9316,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.48760529131298, @@ -10534,31 +9326,6 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.66622, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "pwd = \"cackle!\"", - "line_num": 1, - "path": "tests/samples/pwd.gradle", - "info": "tests/samples/pwd.gradle|RAW", - "value": "cackle!", - "value_start": 7, - "value_end": 14, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.120589933192232, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -10576,6 +9343,8 @@ "value_start": 0, "value_end": 179, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.493434473754405, @@ -10587,23 +9356,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99266, + "ml_probability": 0.911, "rule": "Salt", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "var Himalayan_salt = \"$hal$1te$TnnGdhednJsdQ5nfetwZ\";", + "line": "salt3 = \" 827634876\"; ", "line_num": 1, - "path": "tests/samples/salt.hs", - "info": "tests/samples/salt.hs|RAW", - "value": "$hal$1te$TnnGdhednJsdQ5nfetwZ", - "value_start": 22, - "value_end": 51, - "variable": "Himalayan_salt", + "path": "tests/samples/salt.py", + "info": "tests/samples/salt.py|STRUCT|STRUCT:2|KEYWORD:`salt3 = \" 827634876\"; `", + "value": " 827634876", + "value_start": 9, + "value_end": 19, + "variable": "salt3", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.613714857551378, + "entropy": 2.389735285398626, "valid": false } } @@ -10612,7 +9383,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98571, + "ml_probability": 0.887, "rule": "Salt", "severity": "medium", "confidence": "moderate", @@ -10622,13 +9393,42 @@ "line_num": 1, "path": "tests/samples/salt.py", "info": "tests/samples/salt.py|RAW", - "value": "\\x23!\\xae2389x&543@", + "value": "\\x23!\\xae2389x&543@", + "value_start": 10, + "value_end": 29, + "variable": "salt1", + "variable_start": 0, + "variable_end": 5, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.524274220204383, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.907, + "rule": "Salt", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "salt3 = u\"\\u0020827634876\"", + "line_num": 3, + "path": "tests/samples/salt.py", + "info": "tests/samples/salt.py|RAW", + "value": "\\u0020827634876", "value_start": 10, - "value_end": 29, - "variable": "salt1", + "value_end": 25, + "variable": "salt3", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.524274220204383, + "entropy": 2.796105389090387, "valid": false } } @@ -10637,23 +9437,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.721, + "ml_probability": 0.816, "rule": "Salt", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "salt2 = r\"\"\"\\0x12\\0x3s\"\"\"", - "line_num": 2, + "line": "salt4 = {\"salt5\": \"my124%#$@s\\x04clt\\0\"}", + "line_num": 4, "path": "tests/samples/salt.py", "info": "tests/samples/salt.py|RAW", - "value": "\\0x12\\0x3s", - "value_start": 12, - "value_end": 22, - "variable": "salt2", + "value": "my124%#$@s\\x04clt\\0", + "value_start": 19, + "value_end": 38, + "variable": "salt5", + "variable_start": 10, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.25754247590989, + "entropy": 2.6959504039350857, "valid": false } } @@ -10662,24 +9464,26 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98487, + "ml_probability": 0.665, "rule": "Salt", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "salt3 = u\"\\u0020827634876\"", - "line_num": 3, + "line": "json_escaped = \"{\\\\\\\"salt8\\\\\\\":\\\\\\\"4b9a6d8b638eb0c6\\\\\\\"}\"", + "line_num": 5, "path": "tests/samples/salt.py", "info": "tests/samples/salt.py|RAW", - "value": "\\u0020827634876", - "value_start": 10, - "value_end": 25, - "variable": "salt3", + "value": "4b9a6d8b638eb0c6", + "value_start": 35, + "value_end": 51, + "variable": "salt8", + "variable_start": 21, + "variable_end": 26, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.796105389090387, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.2806390622295662, + "valid": true } } ] @@ -10687,23 +9491,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.69654, - "rule": "Salt", + "ml_probability": 0.852, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "salt4 = {\"salt4\": \"my124%#$@s\\x04clt\\0\"}", - "line_num": 4, - "path": "tests/samples/salt.py", - "info": "tests/samples/salt.py|RAW", - "value": "my124%#$@s\\x04clt\\0", - "value_start": 19, - "value_end": 38, - "variable": "salt4", + "line": "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t : Password = WeR15tr0n6", + "line_num": 1, + "path": "tests/samples/sample.docx", + "info": "tests/samples/sample.docx.gz|GZIP|tests/samples/sample.docx|ZIP|word/document.xml|XML", + "value": "WeR15tr0n6", + "value_start": 77, + "value_end": 87, + "variable": "Password", + "variable_start": 66, + "variable_end": 74, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.6959504039350857, + "entropy": 3.321928094887362, "valid": false } } @@ -10712,7 +9518,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90913, + "ml_probability": 0.852, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -10726,6 +9532,8 @@ "value_start": 77, "value_end": 87, "variable": "Password", + "variable_start": 66, + "variable_end": 74, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.321928094887362, @@ -10751,6 +9559,8 @@ "value_start": 1628, "value_end": 1669, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 1.4322437698226884, @@ -10761,24 +9571,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90913, - "rule": "Password", - "severity": "medium", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "AWS Client ID", + "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t : Password = WeR15tr0n6", + "line": "AwsAccessKey:AKIAGIREOGIAWSKEY123", "line_num": 1, - "path": "tests/samples/sample.docx.gz", - "info": "tests/samples/sample.docx.gz|GZIP|tests/samples/sample.docx|ZIP|word/document.xml|XML", - "value": "WeR15tr0n6", - "value_start": 77, - "value_end": 87, - "variable": "Password", + "path": "tests/samples/sample.pdf", + "info": "tests/samples/sample.pdf|PDF:1|ENCODED|RAW", + "value": "AKIAGIREOGIAWSKEY123", + "value_start": 13, + "value_end": 33, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.321928094887362, + "entropy": 3.5464393446710156, "valid": false } } @@ -10786,10 +9598,10 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.719, + "rule": "Key", + "severity": "medium", "confidence": "moderate", "line_data_list": [ { @@ -10800,7 +9612,9 @@ "value": "AKIAGIREOGIAWSKEY123", "value_start": 13, "value_end": 33, - "variable": null, + "variable": "AwsAccessKey", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -10812,7 +9626,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99934, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -10826,6 +9640,8 @@ "value_start": 11, "value_end": 22, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.963119653306635, @@ -10851,6 +9667,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.838879892515178, @@ -10862,7 +9680,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98391, + "ml_probability": 0.995, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -10876,6 +9694,8 @@ "value_start": 12, "value_end": 22, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.321928094887362, @@ -10901,6 +9721,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3705246708692047, @@ -10926,6 +9748,8 @@ "value_start": 18, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.6658566472141003, @@ -10951,6 +9775,8 @@ "value_start": 0, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.029574370937287, @@ -10976,6 +9802,8 @@ "value_start": 21, "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.843520703364327, @@ -11001,6 +9829,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.620007704961091, @@ -11026,6 +9856,8 @@ "value_start": 12, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.472678031846025, @@ -11051,6 +9883,8 @@ "value_start": 0, "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.181675184876157, @@ -11076,6 +9910,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.532808692053926, @@ -11101,6 +9937,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.559610565373458, @@ -11126,6 +9964,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -11151,6 +9991,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -11176,6 +10018,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -11201,6 +10045,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -11212,7 +10058,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99532, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -11226,6 +10072,8 @@ "value_start": 12, "value_end": 28, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -11251,6 +10099,8 @@ "value_start": 0, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.6983183218203175, @@ -11276,6 +10126,8 @@ "value_start": 0, "value_end": 45, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.697662125333613, @@ -11287,7 +10139,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.85719, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -11301,6 +10153,8 @@ "value_start": 26, "value_end": 38, "variable": "Password", + "variable_start": 5, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.688721875540867, @@ -11312,7 +10166,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.89814, + "ml_probability": 0.966, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -11326,6 +10180,8 @@ "value_start": 11, "value_end": 18, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.5216406363433186, @@ -11337,7 +10193,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99958, + "ml_probability": 0.994, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -11351,6 +10207,8 @@ "value_start": 9, "value_end": 40, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.3143145281223143, @@ -11362,7 +10220,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97834, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -11376,6 +10234,8 @@ "value_start": 11, "value_end": 22, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.459431618637298, @@ -11387,7 +10247,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99981, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -11401,6 +10261,8 @@ "value_start": 9, "value_end": 38, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.069774753916278, @@ -11412,7 +10274,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99891, + "ml_probability": 0.931, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -11426,6 +10288,8 @@ "value_start": 8, "value_end": 29, "variable": "token", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.0981768385722708, @@ -11437,7 +10301,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99769, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -11451,6 +10315,8 @@ "value_start": 11, "value_end": 21, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.325349666421154, @@ -11476,6 +10342,8 @@ "value_start": 0, "value_end": 45, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.697662125333613, @@ -11501,6 +10369,8 @@ "value_start": 5, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.253801390571587, @@ -11526,6 +10396,8 @@ "value_start": 5, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.5117321397240526, @@ -11551,6 +10423,8 @@ "value_start": 5, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.253801390571587, @@ -11576,6 +10450,8 @@ "value_start": 5, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.5117321397240526, @@ -11593,17 +10469,19 @@ "confidence": "moderate", "line_data_list": [ { - "line": "the line will be found twice # 100 EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "line": "the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "line_num": 97, "path": "tests/samples/test.html", "info": "tests/samples/test.html|HTML", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 35, - "value_end": 77, + "value_end": 122, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, + "entropy": 4.936120692057916, "valid": true } } @@ -11618,17 +10496,19 @@ "confidence": "moderate", "line_data_list": [ { - "line": "the line will be found twice # 100 EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "line": "the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "line_num": 100, "path": "tests/samples/test.html", "info": "tests/samples/test.html|HTML", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 35, - "value_end": 77, + "value_end": 122, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, + "entropy": 4.936120692057916, "valid": true } } @@ -11651,6 +10531,8 @@ "value_start": 14, "value_end": 108, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.006147345318248, @@ -11661,33 +10543,8 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "token in zip: eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "line_num": 1, - "path": "tests/samples/test2.eml", - "info": "tests/samples/test2.eml|EML-DATA|ZIP|token.txt|RAW", - "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "value_start": 14, - "value_end": 108, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.006147345318248, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -11701,6 +10558,8 @@ "value_start": 14, "value_end": 108, "variable": "token in zip", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.006147345318248, @@ -11726,6 +10585,8 @@ "value_start": 15, "value_end": 109, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0296677144829305, @@ -11736,33 +10597,8 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "line_num": 8, - "path": "tests/samples/test2.eml", - "info": "tests/samples/test2.eml|EML-TEXT", - "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "value_start": 15, - "value_end": 109, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.0296677144829305, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -11776,6 +10612,8 @@ "value_start": 15, "value_end": 109, "variable": "token in text", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0296677144829305, @@ -11787,7 +10625,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99401, + "ml_probability": 0.804, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -11801,6 +10639,8 @@ "value_start": 19, "value_end": 44, "variable": "gi_reo_gi_token", + "variable_start": 0, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.133660689688186, @@ -11812,7 +10652,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98366, + "ml_probability": 0.716, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -11826,6 +10666,8 @@ "value_start": 19, "value_end": 47, "variable": "DemoToken", + "variable_start": 8, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.039148671903071, @@ -11837,7 +10679,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99833, + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -11851,6 +10693,8 @@ "value_start": 16, "value_end": 48, "variable": "tp_token_value", + "variable_start": 0, + "variable_end": 14, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.6014097655573916, @@ -11876,6 +10720,8 @@ "value_start": 12, "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "HEX_CHARS", "entropy": 3.7215926003976607, @@ -11887,7 +10733,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99877, + "ml_probability": 0.994, "rule": "URL Credentials", "severity": "high", "confidence": "moderate", @@ -11900,7 +10746,9 @@ "value": "dh3sjr8b", "value_start": 22, "value_end": 30, - "variable": null, + "variable": "mongodb://", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -11912,7 +10760,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99634, + "ml_probability": 1.0, "rule": "URL Credentials", "severity": "high", "confidence": "moderate", @@ -11925,7 +10773,9 @@ "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, - "variable": null, + "variable": "dbconnection://", + "variable_start": 32, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.584962500721156, @@ -11934,6 +10784,168 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Credential", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", + "line_num": 3, + "path": "tests/samples/url_cred.js", + "info": "tests/samples/url_cred.js|RAW", + "value": "546DFS64N90P3AW7DX%2Fkeep", + "value_start": 49, + "value_end": 74, + "variable": "Credential", + "variable_start": 38, + "variable_end": 48, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.058101942183734, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.993, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "// \"fp://no.host.real/any/path/to/nowhere/\",\"key\":\"f45VgF8jX79o@anydata.com\"", + "line_num": 7, + "path": "tests/samples/url_cred.js", + "info": "tests/samples/url_cred.js|RAW", + "value": "f45VgF8jX79o@anydata.com", + "value_start": 51, + "value_end": 75, + "variable": "key", + "variable_start": 45, + "variable_end": 48, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.348308333814105, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.971, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", + "line_num": 10, + "path": "tests/samples/url_cred.js", + "info": "tests/samples/url_cred.js|RAW", + "value": "3487263-2384579834-234732875-345", + "value_start": 40, + "value_end": 72, + "variable": "key", + "variable_start": 36, + "variable_end": 39, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.6557496115311405, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Credential", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", + "line_num": 10, + "path": "tests/samples/url_cred.js", + "info": "tests/samples/url_cred.js|RAW", + "value": "546DFS64N90P3AW7DX", + "value_start": 17, + "value_end": 35, + "variable": "Credential", + "variable_start": 6, + "variable_end": 16, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.836591668108979, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.989, + "rule": "URL Credentials", + "severity": "high", + "confidence": "moderate", + "line_data_list": [ + { + "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", + "line_num": 13, + "path": "tests/samples/url_cred.js", + "info": "tests/samples/url_cred.js|RAW", + "value": "FnD83JZs", + "value_start": 44, + "value_end": 52, + "variable": "smtps://", + "variable_start": 18, + "variable_end": 26, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.0, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "UUID", + "severity": "info", + "confidence": "strong", + "line_data_list": [ + { + "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", + "line_num": 1, + "path": "tests/samples/uuid", + "info": "tests/samples/uuid|RAW", + "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", + "value_start": 0, + "value_end": 36, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.2373263071270246, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -11951,6 +10963,8 @@ "value_start": 7, "value_end": 479, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.396703284270004, @@ -11962,7 +10976,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.87752, + "ml_probability": 0.911, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -11976,6 +10990,8 @@ "value_start": 11, "value_end": 18, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, diff --git a/tests/data/doc.json b/tests/data/doc.json index adc664b66..0311797b5 100644 --- a/tests/data/doc.json +++ b/tests/data/doc.json @@ -16,6 +16,8 @@ "value_start": 0, "value_end": 3078, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.4978497506970045, @@ -41,6 +43,8 @@ "value_start": 16, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.220175521464345, @@ -58,17 +62,100 @@ "confidence": "strong", "line_data_list": [ { - "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974\"", + "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "tests/samples/atlassian_pat", "info": "tests/samples/atlassian_pat|RAW", - "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.628712032325118, + "entropy": 5.614483907763351, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "line_num": 2, + "path": "tests/samples/atlassian_pat", + "info": "tests/samples/atlassian_pat|RAW", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "value_start": 20, + "value_end": 213, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.592654863341127, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "line_num": 3, + "path": "tests/samples/atlassian_pat", + "info": "tests/samples/atlassian_pat|RAW", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "value_start": 22, + "value_end": 216, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.571478154549278, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "line_num": 4, + "path": "tests/samples/atlassian_pat", + "info": "tests/samples/atlassian_pat|RAW", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "value_start": 24, + "value_end": 218, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.572975546587697, "valid": true } } @@ -91,6 +178,8 @@ "value_start": 14, "value_end": 34, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -116,6 +205,8 @@ "value_start": 35, "value_end": 55, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -141,6 +232,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -166,6 +259,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -181,6 +276,8 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -206,6 +303,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -231,6 +330,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -246,6 +347,8 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -271,6 +374,8 @@ "value_start": 15, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -296,6 +401,8 @@ "value_start": 18, "value_end": 66, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.52467389677155, @@ -321,6 +428,35 @@ "value_start": 0, "value_end": 1316, "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.615950458346115, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "JSON Web Token", + "severity": "medium", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", + "line_num": 1, + "path": "tests/samples/azure_access_token", + "info": "tests/samples/azure_access_token|RAW", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", + "value_start": 0, + "value_end": 1316, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.615950458346115, @@ -329,6 +465,60 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Azure Access Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "tests/samples/azure_access_token|RAW", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "JSON Web Token", + "severity": "medium", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "tests/samples/azure_access_token|RAW", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -346,6 +536,8 @@ "value_start": 14, "value_end": 54, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.620007704961091, @@ -371,6 +563,8 @@ "value_start": 15, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.826255561405635, @@ -396,6 +590,8 @@ "value_start": 11, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.593400348604437, @@ -421,6 +617,8 @@ "value_start": 22, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.9477027792200903, @@ -446,6 +644,8 @@ "value_start": 28, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.3125, @@ -463,17 +663,19 @@ "confidence": "strong", "line_data_list": [ { - "line": "repo_access = \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7\"", + "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "tests/samples/bitbucket_repository_access_token", "info": "tests/samples/bitbucket_repository_access_token|RAW", - "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7", - "value_start": 15, - "value_end": 207, + "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", + "value_start": 39, + "value_end": 231, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.559335469855166, + "entropy": 5.573080311527303, "valid": true } } @@ -496,6 +698,8 @@ "value_start": -2, "value_end": -2, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": null, "entropy": null, @@ -521,6 +725,8 @@ "value_start": -2, "value_end": -2, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": null, "entropy": null, @@ -546,6 +752,8 @@ "value_start": -2, "value_end": -2, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": null, "entropy": null, @@ -571,6 +779,8 @@ "value_start": 14, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.9136769977597905, @@ -596,6 +806,8 @@ "value_start": 0, "value_end": 71, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.5117321397240526, @@ -604,6 +816,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Discord Bot Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", + "line_num": 1, + "path": "tests/samples/discord_bot_token", + "info": "tests/samples/discord_bot_token|RAW", + "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", + "value_start": 0, + "value_end": 72, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.731746181697384, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -621,6 +860,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -636,6 +877,8 @@ "value_start": 3, "value_end": 23, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.4736388806542577, @@ -661,6 +904,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -686,6 +931,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.7897352853986264, @@ -701,6 +948,8 @@ "value_start": 3, "value_end": 9, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -726,6 +975,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.7897352853986264, @@ -751,6 +1002,8 @@ "value_start": 16, "value_end": 26, "variable": "PW", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -766,6 +1019,8 @@ "value_start": 6, "value_end": 12, "variable": "ID", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -791,6 +1046,8 @@ "value_start": 16, "value_end": 26, "variable": "PW", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -816,6 +1073,8 @@ "value_start": 25, "value_end": 35, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -831,6 +1090,8 @@ "value_start": 9, "value_end": 15, "variable": "Username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -856,6 +1117,8 @@ "value_start": 25, "value_end": 35, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -881,6 +1144,8 @@ "value_start": 19, "value_end": 29, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -896,6 +1161,8 @@ "value_start": 3, "value_end": 29, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1999791952552306, @@ -921,6 +1188,8 @@ "value_start": 19, "value_end": 29, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -946,6 +1215,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -961,6 +1232,8 @@ "value_start": 3, "value_end": 23, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.689735285398626, @@ -986,6 +1259,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1011,6 +1286,8 @@ "value_start": 19, "value_end": 29, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1026,6 +1303,8 @@ "value_start": 3, "value_end": 9, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1051,6 +1330,8 @@ "value_start": 19, "value_end": 29, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1076,6 +1357,8 @@ "value_start": 21, "value_end": 31, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1091,6 +1374,8 @@ "value_start": 5, "value_end": 11, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1116,6 +1401,8 @@ "value_start": 21, "value_end": 31, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1141,6 +1428,8 @@ "value_start": 25, "value_end": 35, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1156,6 +1445,8 @@ "value_start": 9, "value_end": 35, "variable": "username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1999791952552306, @@ -1181,6 +1472,8 @@ "value_start": 25, "value_end": 35, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1206,6 +1499,8 @@ "value_start": 20, "value_end": 31, "variable": "pwd", + "variable_start": 16, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1221,6 +1516,8 @@ "value_start": 9, "value_end": 15, "variable": "username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1246,6 +1543,8 @@ "value_start": 20, "value_end": 31, "variable": "pwd", + "variable_start": 16, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1271,6 +1570,8 @@ "value_start": 22, "value_end": 33, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.712675334928137, @@ -1286,6 +1587,8 @@ "value_start": 6, "value_end": 33, "variable": "id", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1238097237446634, @@ -1311,6 +1614,8 @@ "value_start": 22, "value_end": 33, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.712675334928137, @@ -1336,6 +1641,8 @@ "value_start": 14, "value_end": 25, "variable": "PWD", + "variable_start": 10, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1351,6 +1658,8 @@ "value_start": 3, "value_end": 9, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1376,6 +1685,8 @@ "value_start": 14, "value_end": 25, "variable": "PWD", + "variable_start": 10, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1401,6 +1712,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1416,6 +1729,8 @@ "value_start": 8, "value_end": 14, "variable": "user id", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1441,6 +1756,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1466,6 +1783,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1481,6 +1800,8 @@ "value_start": 5, "value_end": 32, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2258425941951625, @@ -1506,6 +1827,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1531,6 +1854,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1546,6 +1871,8 @@ "value_start": 5, "value_end": 32, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2258425941951625, @@ -1571,6 +1898,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1596,6 +1925,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1611,6 +1942,8 @@ "value_start": 9, "value_end": 15, "variable": "username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1636,6 +1969,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1661,6 +1996,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1676,6 +2013,8 @@ "value_start": 10, "value_end": 16, "variable": "User name", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1701,6 +2040,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1726,6 +2067,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1741,6 +2084,8 @@ "value_start": 9, "value_end": 36, "variable": "username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2258425941951625, @@ -1766,6 +2111,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1791,6 +2138,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1806,6 +2155,8 @@ "value_start": 7, "value_end": 13, "variable": "user", + "variable_start": 2, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1831,6 +2182,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1856,6 +2209,8 @@ "value_start": 19, "value_end": 30, "variable": "passwd", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1871,6 +2226,8 @@ "value_start": 5, "value_end": 11, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -1896,6 +2253,8 @@ "value_start": 19, "value_end": 30, "variable": "passwd", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1921,6 +2280,8 @@ "value_start": 8, "value_end": 19, "variable": "account", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1936,6 +2297,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1961,6 +2324,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1986,6 +2351,8 @@ "value_start": 16, "value_end": 27, "variable": "\ud328\uc2a4\uc6cc\ub4dc", + "variable_start": 11, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2001,6 +2368,8 @@ "value_start": 4, "value_end": 10, "variable": "\uc544\uc774\ub514", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2026,6 +2395,8 @@ "value_start": 16, "value_end": 27, "variable": "\ud328\uc2a4\uc6cc\ub4dc", + "variable_start": 11, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2051,6 +2422,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2066,6 +2439,8 @@ "value_start": 5, "value_end": 11, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2091,6 +2466,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2116,6 +2493,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2131,6 +2510,8 @@ "value_start": 9, "value_end": 36, "variable": "Username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1978837978187378, @@ -2156,6 +2537,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2181,6 +2564,8 @@ "value_start": 23, "value_end": 34, "variable": "password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2196,6 +2581,8 @@ "value_start": 7, "value_end": 34, "variable": "userId", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.299916668269237, @@ -2221,6 +2608,8 @@ "value_start": 23, "value_end": 34, "variable": "password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2246,6 +2635,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2261,6 +2652,8 @@ "value_start": 7, "value_end": 13, "variable": "user", + "variable_start": 2, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2286,6 +2679,8 @@ "value_start": 43, "value_end": 54, "variable": "Password", + "variable_start": 34, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2301,6 +2696,8 @@ "value_start": 15, "value_end": 21, "variable": "ID", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2326,6 +2723,8 @@ "value_start": 43, "value_end": 54, "variable": "Password", + "variable_start": 34, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2351,6 +2750,8 @@ "value_start": 16, "value_end": 27, "variable": "pw", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2366,6 +2767,8 @@ "value_start": 6, "value_end": 27, "variable": "id", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.156051369736198, @@ -2391,6 +2794,8 @@ "value_start": 16, "value_end": 27, "variable": "pw", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2416,6 +2821,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2431,6 +2838,8 @@ "value_start": 5, "value_end": 11, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2456,6 +2865,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2481,6 +2892,8 @@ "value_start": 6, "value_end": 17, "variable": "Login", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2496,6 +2909,8 @@ "value_start": 22, "value_end": 33, "variable": "Pwd", + "variable_start": 18, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2521,6 +2936,8 @@ "value_start": 22, "value_end": 33, "variable": "Pwd", + "variable_start": 18, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2546,6 +2963,8 @@ "value_start": 22, "value_end": 33, "variable": "Password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2561,6 +2980,8 @@ "value_start": 6, "value_end": 12, "variable": "ID", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2586,6 +3007,8 @@ "value_start": 22, "value_end": 33, "variable": "Password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2611,6 +3034,8 @@ "value_start": 27, "value_end": 38, "variable": "Password", + "variable_start": 18, + "variable_end": 26, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2626,6 +3051,8 @@ "value_start": 10, "value_end": 16, "variable": "Username", + "variable_start": 1, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2651,6 +3078,8 @@ "value_start": 27, "value_end": 38, "variable": "Password", + "variable_start": 18, + "variable_end": 26, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2676,6 +3105,8 @@ "value_start": 8, "value_end": 19, "variable": "account", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2691,6 +3122,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2716,6 +3149,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2741,6 +3176,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2756,6 +3193,8 @@ "value_start": 8, "value_end": 14, "variable": "user id", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2771,6 +3210,8 @@ "value_start": 20, "value_end": 34, "variable": "user", + "variable_start": 15, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1205899331922327, @@ -2796,6 +3237,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2821,6 +3264,8 @@ "value_start": 26, "value_end": 37, "variable": "password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2836,6 +3281,8 @@ "value_start": 10, "value_end": 16, "variable": "name", + "variable_start": 5, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2861,6 +3308,8 @@ "value_start": 26, "value_end": 37, "variable": "password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2886,6 +3335,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2901,6 +3352,8 @@ "value_start": 11, "value_end": 17, "variable": "username", + "variable_start": 2, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -2926,6 +3379,8 @@ "value_start": 28, "value_end": 39, "variable": "ANYpassword", + "variable_start": 16, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2941,6 +3396,8 @@ "value_start": 9, "value_end": 39, "variable": "login", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.0813939366353496, @@ -2966,6 +3423,8 @@ "value_start": 28, "value_end": 39, "variable": "password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2991,6 +3450,8 @@ "value_start": 31, "value_end": 42, "variable": "ANYpassword", + "variable_start": 19, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3006,6 +3467,8 @@ "value_start": 12, "value_end": 18, "variable": "username", + "variable_start": 3, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3031,6 +3494,8 @@ "value_start": 31, "value_end": 42, "variable": "password", + "variable_start": 22, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3056,6 +3521,8 @@ "value_start": 14, "value_end": 25, "variable": "PWD", + "variable_start": 10, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3071,6 +3538,8 @@ "value_start": 3, "value_end": 25, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6695091251867558, @@ -3096,6 +3565,8 @@ "value_start": 14, "value_end": 25, "variable": "PWD", + "variable_start": 10, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3121,6 +3592,8 @@ "value_start": 22, "value_end": 33, "variable": "passwd", + "variable_start": 15, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3136,6 +3609,8 @@ "value_start": 8, "value_end": 14, "variable": "account", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3161,6 +3636,8 @@ "value_start": 22, "value_end": 33, "variable": "passwd", + "variable_start": 15, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3186,6 +3663,8 @@ "value_start": 22, "value_end": 33, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3201,6 +3680,8 @@ "value_start": 6, "value_end": 12, "variable": "login", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3226,6 +3707,8 @@ "value_start": 22, "value_end": 33, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3251,6 +3734,8 @@ "value_start": 9, "value_end": 20, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3266,6 +3751,8 @@ "value_start": 30, "value_end": 36, "variable": "username", + "variable_start": 21, + "variable_end": 29, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3291,6 +3778,8 @@ "value_start": 9, "value_end": 20, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3316,6 +3805,8 @@ "value_start": 6, "value_end": 15, "variable": "Login", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.373266667948722, @@ -3331,6 +3822,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3356,6 +3849,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3381,6 +3876,8 @@ "value_start": 13, "value_end": 24, "variable": "pw", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3396,6 +3893,8 @@ "value_start": 3, "value_end": 9, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3421,6 +3920,8 @@ "value_start": 13, "value_end": 24, "variable": "pw", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3446,6 +3947,8 @@ "value_start": 26, "value_end": 37, "variable": "PW", + "variable_start": 23, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3461,6 +3964,8 @@ "value_start": 16, "value_end": 22, "variable": "ID", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3486,6 +3991,8 @@ "value_start": 26, "value_end": 37, "variable": "PW", + "variable_start": 23, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3511,6 +4018,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -3526,6 +4035,8 @@ "value_start": 4, "value_end": 10, "variable": "id", + "variable_start": 1, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3551,6 +4062,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -3576,6 +4089,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3591,6 +4106,8 @@ "value_start": 9, "value_end": 15, "variable": "username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3616,6 +4133,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3641,6 +4160,8 @@ "value_start": 15, "value_end": 26, "variable": "\ud328\uc2a4\uc6cc\ub4dc", + "variable_start": 10, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3656,6 +4177,8 @@ "value_start": 3, "value_end": 9, "variable": "\uacc4\uc815", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3681,6 +4204,8 @@ "value_start": 15, "value_end": 26, "variable": "\ud328\uc2a4\uc6cc\ub4dc", + "variable_start": 10, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3706,6 +4231,8 @@ "value_start": 28, "value_end": 39, "variable": "Password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3721,6 +4248,8 @@ "value_start": 11, "value_end": 17, "variable": "User Name", + "variable_start": 1, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3746,6 +4275,8 @@ "value_start": 28, "value_end": 39, "variable": "Password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3771,6 +4302,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -3786,6 +4319,8 @@ "value_start": 8, "value_end": 40, "variable": "account", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.4604792966721747, @@ -3811,6 +4346,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -3836,6 +4373,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3851,6 +4390,8 @@ "value_start": 8, "value_end": 14, "variable": "User", + "variable_start": 3, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -3876,6 +4417,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3901,6 +4444,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3916,6 +4461,8 @@ "value_start": 5, "value_end": 27, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1731971598560924, @@ -3941,6 +4488,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3966,6 +4515,8 @@ "value_start": 33, "value_end": 44, "variable": "ANY_password", + "variable_start": 20, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -3981,6 +4532,8 @@ "value_start": 13, "value_end": 44, "variable": "username", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.015565929812397, @@ -4006,6 +4559,8 @@ "value_start": 33, "value_end": 44, "variable": "password", + "variable_start": 24, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4031,6 +4586,8 @@ "value_start": 32, "value_end": 43, "variable": "ANY_password", + "variable_start": 19, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4046,6 +4603,8 @@ "value_start": 12, "value_end": 43, "variable": "username", + "variable_start": 3, + "variable_end": 11, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.015565929812397, @@ -4071,6 +4630,8 @@ "value_start": 32, "value_end": 43, "variable": "password", + "variable_start": 23, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4096,6 +4657,8 @@ "value_start": 34, "value_end": 45, "variable": "password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4111,6 +4674,8 @@ "value_start": 13, "value_end": 19, "variable": "User Account", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -4126,6 +4691,8 @@ "value_start": 25, "value_end": 45, "variable": "User", + "variable_start": 20, + "variable_end": 24, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.05754247590989, @@ -4151,6 +4718,8 @@ "value_start": 34, "value_end": 45, "variable": "password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4176,6 +4745,8 @@ "value_start": 38, "value_end": 49, "variable": "PWD", + "variable_start": 34, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4191,6 +4762,8 @@ "value_start": 15, "value_end": 21, "variable": "ID", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -4216,6 +4789,8 @@ "value_start": 38, "value_end": 49, "variable": "PWD", + "variable_start": 34, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4241,6 +4816,8 @@ "value_start": 23, "value_end": 34, "variable": "password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4256,6 +4833,8 @@ "value_start": 7, "value_end": 13, "variable": "userid", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -4281,6 +4860,8 @@ "value_start": 23, "value_end": 34, "variable": "password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4306,6 +4887,8 @@ "value_start": 33, "value_end": 44, "variable": "password", + "variable_start": 24, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4321,6 +4904,8 @@ "value_start": 13, "value_end": 19, "variable": "username", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -4346,6 +4931,8 @@ "value_start": 33, "value_end": 44, "variable": "password", + "variable_start": 24, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4371,6 +4958,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4386,6 +4975,8 @@ "value_start": 5, "value_end": 11, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -4411,6 +5002,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4436,6 +5029,8 @@ "value_start": 15, "value_end": 26, "variable": "PW", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4451,6 +5046,8 @@ "value_start": 5, "value_end": 26, "variable": "Name", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5743673147627466, @@ -4476,6 +5073,8 @@ "value_start": 15, "value_end": 26, "variable": "PW", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4501,6 +5100,8 @@ "value_start": 13, "value_end": 24, "variable": "\ube44\ubc88", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4516,6 +5117,8 @@ "value_start": 3, "value_end": 9, "variable": "\uacc4\uc815", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -4541,6 +5144,8 @@ "value_start": 13, "value_end": 24, "variable": "\ube44\ubc88", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4566,6 +5171,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4581,6 +5188,8 @@ "value_start": 5, "value_end": 11, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -4606,6 +5215,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4631,6 +5242,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4646,6 +5259,8 @@ "value_start": 5, "value_end": 37, "variable": "Host", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2729792966721747, @@ -4671,6 +5286,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4696,6 +5313,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4711,6 +5330,8 @@ "value_start": 5, "value_end": 32, "variable": "role", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.299916668269237, @@ -4736,6 +5357,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4761,6 +5384,8 @@ "value_start": 5, "value_end": 31, "variable": "Wifi", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.515756684580924, @@ -4776,6 +5401,8 @@ "value_start": 20, "value_end": 31, "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -4801,6 +5428,8 @@ "value_start": 20, "value_end": 31, "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -4826,6 +5455,8 @@ "value_start": 19, "value_end": 30, "variable": "Password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4841,6 +5472,8 @@ "value_start": 3, "value_end": 30, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1978837978187378, @@ -4866,6 +5499,8 @@ "value_start": 19, "value_end": 30, "variable": "Password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4891,6 +5526,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4906,6 +5543,8 @@ "value_start": 5, "value_end": 32, "variable": "name", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.299916668269237, @@ -4931,6 +5570,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4956,6 +5597,8 @@ "value_start": 23, "value_end": 34, "variable": "Password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -4981,6 +5624,8 @@ "value_start": 18, "value_end": 29, "variable": "Pwd", + "variable_start": 14, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -5006,6 +5651,8 @@ "value_start": 21, "value_end": 32, "variable": "pw", + "variable_start": 18, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5021,6 +5668,8 @@ "value_start": 3, "value_end": 17, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.106829570482062, @@ -5046,6 +5695,8 @@ "value_start": 21, "value_end": 32, "variable": "pw", + "variable_start": 18, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5071,6 +5722,8 @@ "value_start": 13, "value_end": 24, "variable": "\ube44\ubc88", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5086,6 +5739,8 @@ "value_start": 3, "value_end": 24, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.4604474374875673, @@ -5111,6 +5766,8 @@ "value_start": 13, "value_end": 24, "variable": "\ube44\ubc88", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5136,6 +5793,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5151,6 +5810,8 @@ "value_start": 9, "value_end": 15, "variable": "id", + "variable_start": 6, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -5176,6 +5837,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5201,6 +5864,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5216,6 +5881,8 @@ "value_start": 5, "value_end": 27, "variable": "user", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1731971598560924, @@ -5241,6 +5908,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5266,6 +5935,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -5281,6 +5952,8 @@ "value_start": 9, "value_end": 30, "variable": "username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.060813274498103, @@ -5306,6 +5979,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -5331,6 +6006,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5346,6 +6023,8 @@ "value_start": 9, "value_end": 15, "variable": "username", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -5371,6 +6050,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5396,6 +6077,8 @@ "value_start": 3, "value_end": 14, "variable": "PW", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5411,6 +6094,8 @@ "value_start": 18, "value_end": 24, "variable": "ID", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -5436,6 +6121,8 @@ "value_start": 3, "value_end": 14, "variable": "PW", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5461,6 +6148,8 @@ "value_start": 16, "value_end": 27, "variable": "\ube44\ubc00\ubc88\ud638", + "variable_start": 11, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -5476,6 +6165,8 @@ "value_start": 4, "value_end": 10, "variable": "\uc544\uc774\ub514", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -5501,6 +6192,8 @@ "value_start": 16, "value_end": 27, "variable": "\ube44\ubc00\ubc88\ud638", + "variable_start": 11, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -5526,6 +6219,8 @@ "value_start": 16, "value_end": 27, "variable": "pw", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5541,6 +6236,8 @@ "value_start": 6, "value_end": 12, "variable": "id", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -5566,6 +6263,8 @@ "value_start": 16, "value_end": 27, "variable": "pw", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5591,6 +6290,8 @@ "value_start": 13, "value_end": 24, "variable": "\uc554\ud638", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5606,6 +6307,8 @@ "value_start": 3, "value_end": 9, "variable": "\uacc4\uc815", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -5631,6 +6334,8 @@ "value_start": 13, "value_end": 24, "variable": "\uc554\ud638", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5656,6 +6361,8 @@ "value_start": 14, "value_end": 25, "variable": "pw", + "variable_start": 11, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5671,6 +6378,8 @@ "value_start": 4, "value_end": 10, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.584962500721156, @@ -5696,6 +6405,8 @@ "value_start": 14, "value_end": 25, "variable": "pw", + "variable_start": 11, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5721,6 +6432,8 @@ "value_start": 25, "value_end": 36, "variable": "pw", + "variable_start": 22, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5736,6 +6449,8 @@ "value_start": 3, "value_end": 36, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.420896502934224, @@ -5761,6 +6476,8 @@ "value_start": 25, "value_end": 36, "variable": "pw", + "variable_start": 22, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -5786,6 +6503,8 @@ "value_start": 13, "value_end": 21, "variable": "ID/PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -5811,6 +6530,8 @@ "value_start": 17, "value_end": 26, "variable": "ANYID(PW", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -5836,6 +6557,8 @@ "value_start": 19, "value_end": 27, "variable": "ID/Password", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -5861,6 +6584,8 @@ "value_start": 3, "value_end": 21, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5954888901709445, @@ -5876,6 +6601,8 @@ "value_start": 6, "value_end": 21, "variable": "PW", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3859718495273823, @@ -5901,6 +6628,8 @@ "value_start": 13, "value_end": 21, "variable": "ID:PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -5926,6 +6655,8 @@ "value_start": 13, "value_end": 21, "variable": "ID/PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -5951,6 +6682,8 @@ "value_start": 13, "value_end": 21, "variable": "id/pw", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -5976,6 +6709,8 @@ "value_start": 25, "value_end": 33, "variable": "username/password", + "variable_start": 0, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -6001,6 +6736,8 @@ "value_start": 17, "value_end": 25, "variable": "id/passwd", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -6026,6 +6763,8 @@ "value_start": 13, "value_end": 21, "variable": "ID PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -6051,6 +6790,8 @@ "value_start": 25, "value_end": 35, "variable": "PW", + "variable_start": 22, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.65754247590989, @@ -6066,6 +6807,8 @@ "value_start": 15, "value_end": 35, "variable": "ID", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.573638880654258, @@ -6091,6 +6834,8 @@ "value_start": 25, "value_end": 35, "variable": "PW", + "variable_start": 22, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.65754247590989, @@ -6116,6 +6861,8 @@ "value_start": 16, "value_end": 25, "variable": "ID / PW", + "variable_start": 1, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6141,6 +6888,8 @@ "value_start": 14, "value_end": 23, "variable": "\uc544\uc774\ub514/PW", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6166,6 +6915,8 @@ "value_start": 13, "value_end": 22, "variable": "\uacc4\uc815/PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6191,6 +6942,8 @@ "value_start": 13, "value_end": 23, "variable": "ID/PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.65754247590989, @@ -6216,6 +6969,8 @@ "value_start": 25, "value_end": 34, "variable": "id/pw", + "variable_start": 12, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6241,6 +6996,8 @@ "value_start": 14, "value_end": 23, "variable": "ID/PWD", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6266,6 +7023,8 @@ "value_start": 16, "value_end": 25, "variable": "user/pwd", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.5954888901709445, @@ -6291,6 +7050,8 @@ "value_start": 16, "value_end": 25, "variable": "id pw", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6316,6 +7077,8 @@ "value_start": 21, "value_end": 30, "variable": "User/Password", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6341,6 +7104,8 @@ "value_start": 14, "value_end": 23, "variable": "id/pwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6366,6 +7131,8 @@ "value_start": 19, "value_end": 28, "variable": "ID/Password", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6391,6 +7158,8 @@ "value_start": 13, "value_end": 22, "variable": "ID/PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6416,6 +7185,8 @@ "value_start": 14, "value_end": 23, "variable": "ID/PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6441,6 +7212,8 @@ "value_start": 19, "value_end": 27, "variable": null, + "variable_start": -1, + "variable_end": -1, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -6466,6 +7239,8 @@ "value_start": 19, "value_end": 27, "variable": null, + "variable_start": -1, + "variable_end": -1, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -6491,6 +7266,8 @@ "value_start": 19, "value_end": 27, "variable": null, + "variable_start": -1, + "variable_end": -1, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -6516,6 +7293,8 @@ "value_start": 28, "value_end": 36, "variable": "IP ID PW", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.375, @@ -6541,6 +7320,8 @@ "value_start": 28, "value_end": 36, "variable": "IP/ID/PW", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.625, @@ -6566,6 +7347,8 @@ "value_start": 9, "value_end": 18, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6591,6 +7374,8 @@ "value_start": 5, "value_end": 14, "variable": "\ube44\ubc00\ubc88\ud638", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6616,6 +7401,8 @@ "value_start": 3, "value_end": 12, "variable": "pw", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6641,6 +7428,8 @@ "value_start": 9, "value_end": 18, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6666,6 +7455,8 @@ "value_start": 4, "value_end": 13, "variable": "pwd", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6691,6 +7482,8 @@ "value_start": 3, "value_end": 12, "variable": "\ube44\ubc88", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6716,6 +7509,8 @@ "value_start": 13, "value_end": 22, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6741,6 +7536,8 @@ "value_start": 13, "value_end": 22, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6766,6 +7563,8 @@ "value_start": 3, "value_end": 12, "variable": "\uc554\ud638", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6791,6 +7590,8 @@ "value_start": 28, "value_end": 37, "variable": "password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6816,6 +7617,8 @@ "value_start": 7, "value_end": 16, "variable": "PW", + "variable_start": 4, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6841,6 +7644,8 @@ "value_start": 17, "value_end": 26, "variable": "password", + "variable_start": 8, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6856,6 +7661,8 @@ "value_start": 8, "value_end": 26, "variable": "default", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.252715278979705, @@ -6881,6 +7688,8 @@ "value_start": 17, "value_end": 26, "variable": "password", + "variable_start": 8, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6906,6 +7715,8 @@ "value_start": 5, "value_end": 14, "variable": "\ud328\uc2a4\uc6cc\ub4dc", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6931,6 +7742,8 @@ "value_start": 12, "value_end": 21, "variable": "password", + "variable_start": 1, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6956,6 +7769,8 @@ "value_start": 7, "value_end": 16, "variable": "Passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -6981,6 +7796,8 @@ "value_start": 22, "value_end": 31, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7006,6 +7823,8 @@ "value_start": 3, "value_end": 13, "variable": "PW", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.325349666421154, @@ -7031,6 +7850,8 @@ "value_start": 22, "value_end": 31, "variable": "\ube44\ubc88", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7056,6 +7877,8 @@ "value_start": 9, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.325349666421154, @@ -7081,6 +7904,8 @@ "value_start": 7, "value_end": 16, "variable": "passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7106,6 +7931,8 @@ "value_start": 9, "value_end": 18, "variable": "paasword", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7131,6 +7958,8 @@ "value_start": 29, "value_end": 38, "variable": "paasword", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7156,6 +7985,8 @@ "value_start": 9, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.325349666421154, @@ -7181,6 +8012,8 @@ "value_start": 31, "value_end": 40, "variable": "Password", + "variable_start": 22, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7206,6 +8039,8 @@ "value_start": 9, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.325349666421154, @@ -7231,6 +8066,8 @@ "value_start": 23, "value_end": 32, "variable": "pwd", + "variable_start": 19, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7256,6 +8093,8 @@ "value_start": 9, "value_end": 19, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.325349666421154, @@ -7281,6 +8120,8 @@ "value_start": 13, "value_end": 22, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7306,6 +8147,8 @@ "value_start": 11, "value_end": 20, "variable": "password", + "variable_start": 2, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7331,6 +8174,8 @@ "value_start": 29, "value_end": 38, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7346,6 +8191,8 @@ "value_start": 20, "value_end": 38, "variable": "root", + "variable_start": 15, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.252715278979705, @@ -7371,6 +8218,8 @@ "value_start": 29, "value_end": 38, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7396,6 +8245,8 @@ "value_start": 48, "value_end": 57, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7411,6 +8262,8 @@ "value_start": 19, "value_end": 38, "variable": "username", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3932097467479054, @@ -7436,6 +8289,8 @@ "value_start": 48, "value_end": 57, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7461,6 +8316,8 @@ "value_start": 19, "value_end": 28, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7486,6 +8343,8 @@ "value_start": 12, "value_end": 21, "variable": "password", + "variable_start": 3, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7511,6 +8370,8 @@ "value_start": 10, "value_end": 19, "variable": "passwords", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7536,6 +8397,8 @@ "value_start": 4, "value_end": 13, "variable": "P/W", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -7561,6 +8424,8 @@ "value_start": 10, "value_end": 25, "variable": "Token", + "variable_start": 4, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -7586,6 +8451,8 @@ "value_start": 6, "value_end": 21, "variable": "token", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -7611,6 +8478,8 @@ "value_start": 11, "value_end": 26, "variable": "KEY", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -7636,6 +8505,8 @@ "value_start": 7, "value_end": 22, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -7661,6 +8532,8 @@ "value_start": 7, "value_end": 22, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -7686,6 +8559,8 @@ "value_start": 10, "value_end": 25, "variable": "token", + "variable_start": 4, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -7711,6 +8586,8 @@ "value_start": 11, "value_end": 27, "variable": "secret", + "variable_start": 4, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -7736,6 +8613,8 @@ "value_start": 9, "value_end": 25, "variable": "secret", + "variable_start": 2, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -7761,6 +8640,8 @@ "value_start": 11, "value_end": 27, "variable": "secret", + "variable_start": 4, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -7786,6 +8667,8 @@ "value_start": 7, "value_end": 23, "variable": "Token", + "variable_start": 1, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -7811,6 +8694,8 @@ "value_start": 11, "value_end": 27, "variable": "Secret", + "variable_start": 4, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -7836,6 +8721,8 @@ "value_start": 11, "value_end": 27, "variable": "key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -7861,6 +8748,8 @@ "value_start": 11, "value_end": 27, "variable": "Key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -7886,6 +8775,8 @@ "value_start": 8, "value_end": 24, "variable": "key", + "variable_start": 4, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -7911,6 +8802,8 @@ "value_start": 14, "value_end": 30, "variable": "key", + "variable_start": 10, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -7936,6 +8829,8 @@ "value_start": 34, "value_end": 50, "variable": "token", + "variable_start": 28, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -7961,6 +8856,8 @@ "value_start": 13, "value_end": 29, "variable": "token", + "variable_start": 7, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -7986,6 +8883,8 @@ "value_start": 19, "value_end": 35, "variable": "key", + "variable_start": 15, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -8011,6 +8910,8 @@ "value_start": 20, "value_end": 29, "variable": null, + "variable_start": -1, + "variable_end": -1, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8036,6 +8937,8 @@ "value_start": 19, "value_end": 28, "variable": null, + "variable_start": -1, + "variable_end": -1, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8061,6 +8964,8 @@ "value_start": 22, "value_end": 31, "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8086,6 +8991,8 @@ "value_start": 42, "value_end": 50, "variable": "PW", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8101,6 +9008,8 @@ "value_start": 3, "value_end": 27, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2822682296173897, @@ -8126,6 +9035,8 @@ "value_start": 42, "value_end": 50, "variable": "PW", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8151,6 +9062,8 @@ "value_start": 44, "value_end": 53, "variable": "PW", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8176,6 +9089,8 @@ "value_start": 49, "value_end": 57, "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8201,6 +9116,8 @@ "value_start": 62, "value_end": 71, "variable": "password", + "variable_start": 53, + "variable_end": 61, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8226,6 +9143,8 @@ "value_start": 29, "value_end": 37, "variable": "pwd", + "variable_start": 25, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8251,6 +9170,8 @@ "value_start": 13, "value_end": 22, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8276,6 +9197,8 @@ "value_start": 15, "value_end": 24, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8301,6 +9224,8 @@ "value_start": 15, "value_end": 23, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8326,6 +9251,8 @@ "value_start": 42, "value_end": 50, "variable": "pw", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8341,6 +9268,8 @@ "value_start": 3, "value_end": 27, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2822682296173897, @@ -8366,6 +9295,8 @@ "value_start": 42, "value_end": 50, "variable": "pw", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8391,6 +9322,8 @@ "value_start": 47, "value_end": 55, "variable": "PWD", + "variable_start": 43, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8406,6 +9339,8 @@ "value_start": 3, "value_end": 31, "variable": "ID", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.325423415103289, @@ -8431,6 +9366,8 @@ "value_start": 47, "value_end": 55, "variable": "PWD", + "variable_start": 43, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8456,6 +9393,8 @@ "value_start": 45, "value_end": 54, "variable": "pw", + "variable_start": 42, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8481,6 +9420,8 @@ "value_start": 40, "value_end": 49, "variable": "pw", + "variable_start": 37, + "variable_end": 39, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8506,6 +9447,8 @@ "value_start": 45, "value_end": 53, "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8521,6 +9464,8 @@ "value_start": 4, "value_end": 28, "variable": "id", + "variable_start": 1, + "variable_end": 3, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2822682296173897, @@ -8546,6 +9491,8 @@ "value_start": 45, "value_end": 53, "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8571,6 +9518,8 @@ "value_start": 50, "value_end": 59, "variable": "password", + "variable_start": 41, + "variable_end": 49, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8596,6 +9545,8 @@ "value_start": 48, "value_end": 56, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8611,6 +9562,8 @@ "value_start": 3, "value_end": 27, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2822682296173897, @@ -8636,6 +9589,8 @@ "value_start": 48, "value_end": 56, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8661,6 +9616,8 @@ "value_start": 19, "value_end": 27, "variable": "PW", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8686,6 +9643,8 @@ "value_start": 18, "value_end": 27, "variable": "PW", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8711,6 +9670,8 @@ "value_start": 30, "value_end": 39, "variable": "pwd", + "variable_start": 26, + "variable_end": 29, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8728,14 +9689,16 @@ "confidence": "moderate", "line_data_list": [ { - "line": "id:xxxx(ANYpw:IhqSb1Gg)", + "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "tests/samples/doc_various", "info": "tests/samples/doc_various|RAW", - "value": "IhqSb1Gg)", + "value": "IhqSb1Ga)", "value_start": 14, "value_end": 23, "variable": "pw", + "variable_start": 11, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8761,6 +9724,8 @@ "value_start": 28, "value_end": 36, "variable": "pw", + "variable_start": 25, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8786,6 +9751,8 @@ "value_start": 19, "value_end": 28, "variable": null, + "variable_start": -1, + "variable_end": -1, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8811,6 +9778,8 @@ "value_start": 19, "value_end": 27, "variable": null, + "variable_start": -1, + "variable_end": -1, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8836,6 +9805,8 @@ "value_start": 20, "value_end": 29, "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8861,6 +9832,8 @@ "value_start": 28, "value_end": 36, "variable": "PW", + "variable_start": 25, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8886,6 +9859,8 @@ "value_start": 22, "value_end": 30, "variable": "pwd", + "variable_start": 18, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8911,6 +9886,8 @@ "value_start": 34, "value_end": 42, "variable": "Password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -8936,6 +9913,8 @@ "value_start": 20, "value_end": 29, "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8961,6 +9940,8 @@ "value_start": 25, "value_end": 34, "variable": "ID/PW", + "variable_start": 12, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -8986,6 +9967,8 @@ "value_start": 13, "value_end": 22, "variable": "ID/PW", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -9011,6 +9994,8 @@ "value_start": 22, "value_end": 31, "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -9036,6 +10021,8 @@ "value_start": 22, "value_end": 30, "variable": "PW", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9061,6 +10048,8 @@ "value_start": 15, "value_end": 23, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9086,6 +10075,8 @@ "value_start": 15, "value_end": 23, "variable": "PW", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9111,6 +10102,8 @@ "value_start": 43, "value_end": 51, "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9136,6 +10129,8 @@ "value_start": 38, "value_end": 46, "variable": "pw", + "variable_start": 35, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9151,6 +10146,8 @@ "value_start": 3, "value_end": 23, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8604057553297375, @@ -9176,6 +10173,8 @@ "value_start": 38, "value_end": 46, "variable": "pw", + "variable_start": 35, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9201,6 +10200,8 @@ "value_start": 39, "value_end": 47, "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9226,6 +10227,8 @@ "value_start": 43, "value_end": 51, "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9251,6 +10254,8 @@ "value_start": 45, "value_end": 53, "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9276,6 +10281,8 @@ "value_start": 44, "value_end": 52, "variable": "pw", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9301,6 +10308,8 @@ "value_start": 45, "value_end": 54, "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -9326,6 +10335,8 @@ "value_start": 46, "value_end": 55, "variable": "password", + "variable_start": 37, + "variable_end": 45, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -9351,6 +10362,8 @@ "value_start": 45, "value_end": 53, "variable": "Password", + "variable_start": 36, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9376,6 +10389,8 @@ "value_start": 43, "value_end": 51, "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9401,6 +10416,8 @@ "value_start": 44, "value_end": 52, "variable": "password", + "variable_start": 35, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9416,6 +10433,8 @@ "value_start": 3, "value_end": 23, "variable": "id", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8604057553297375, @@ -9441,6 +10460,8 @@ "value_start": 44, "value_end": 52, "variable": "password", + "variable_start": 35, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9466,6 +10487,8 @@ "value_start": 49, "value_end": 57, "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9491,6 +10514,8 @@ "value_start": 47, "value_end": 55, "variable": "pw", + "variable_start": 44, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9506,6 +10531,8 @@ "value_start": 7, "value_end": 31, "variable": "ID", + "variable_start": 4, + "variable_end": 6, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2822682296173897, @@ -9531,6 +10558,8 @@ "value_start": 47, "value_end": 55, "variable": "pw", + "variable_start": 44, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9556,6 +10585,8 @@ "value_start": 39, "value_end": 47, "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -9581,6 +10612,8 @@ "value_start": 26, "value_end": 35, "variable": "pw", + "variable_start": 23, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -9606,6 +10639,8 @@ "value_start": 9, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.89361507332541, @@ -9631,6 +10666,8 @@ "value_start": 24, "value_end": 39, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.4565647621309536, @@ -9656,6 +10693,8 @@ "value_start": 15, "value_end": 153, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.395844179446957, @@ -9681,6 +10720,8 @@ "value_start": 0, "value_end": 96, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.808191506786782, @@ -9698,17 +10739,19 @@ "confidence": "moderate", "line_data_list": [ { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", + "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, "path": "tests/samples/facebook_key", "info": "tests/samples/facebook_key|RAW", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 28, - "value_end": 70, + "value_end": 115, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, + "entropy": 4.936120692057916, "valid": true } } @@ -9718,22 +10761,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "SECRET_PAIR", - "severity": "medium", + "rule": "Facebook App Token", + "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", - "line_num": 1, + "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", + "line_num": 2, "path": "tests/samples/facebook_key", "info": "tests/samples/facebook_key|RAW", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "value_start": 28, - "value_end": 70, - "variable": "TOKEN", + "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", + "value_start": 0, + "value_end": 44, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, + "iterator": "BASE36_CHARS", + "entropy": 3.2089099270924217, "valid": true } } @@ -9756,6 +10801,8 @@ "value_start": 0, "value_end": 34, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.4347510262969525, @@ -9781,6 +10828,8 @@ "value_start": 0, "value_end": 23, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1394163745499943, @@ -9806,6 +10855,8 @@ "value_start": 0, "value_end": 41, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 1.4322437698226884, @@ -9831,6 +10882,8 @@ "value_start": 0, "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.255374790203285, @@ -9842,7 +10895,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99798, + "ml_probability": 1.0, "rule": "Github Old Token", "severity": "high", "confidence": "moderate", @@ -9856,6 +10909,8 @@ "value_start": 23, "value_end": 63, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.246439344671015, @@ -9881,6 +10936,8 @@ "value_start": 15, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.133660689688185, @@ -9906,6 +10963,8 @@ "value_start": 10, "value_end": 30, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.9058316901429944, @@ -9931,6 +10990,8 @@ "value_start": 11, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.7423376242715105, @@ -9956,6 +11017,8 @@ "value_start": 11, "value_end": 57, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.8494857514609038, @@ -9981,6 +11044,8 @@ "value_start": 17, "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.582118926162056, @@ -10006,6 +11071,8 @@ "value_start": 8, "value_end": 33, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.006593447001756, @@ -10031,6 +11098,8 @@ "value_start": 0, "value_end": 39, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.165196181720608, @@ -10056,6 +11125,8 @@ "value_start": 0, "value_end": 72, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.531537327540733, @@ -10071,6 +11142,8 @@ "value_start": 0, "value_end": 24, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.084962500721157, @@ -10096,6 +11169,8 @@ "value_start": 6, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.531537327540733, @@ -10111,6 +11186,8 @@ "value_start": 90, "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.436181130262395, @@ -10136,6 +11213,8 @@ "value_start": 90, "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.436181130262395, @@ -10161,6 +11240,8 @@ "value_start": 20, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -10186,6 +11267,8 @@ "value_start": 18, "value_end": 130, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.097632476604024, @@ -10211,6 +11294,8 @@ "value_start": 11, "value_end": 107, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.8153130511409934, @@ -10219,6 +11304,60 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Grafana Service Account Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", + "line_num": 1, + "path": "tests/samples/grafana_service_accounts", + "info": "tests/samples/grafana_service_accounts|RAW", + "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", + "value_start": 0, + "value_end": 46, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.52211252299684, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Hashicorp Terraform Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", + "line_num": 1, + "path": "tests/samples/hashicorp_terraform", + "info": "tests/samples/hashicorp_terraform|RAW", + "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", + "value_start": 0, + "value_end": 90, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.348551883097512, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -10236,6 +11375,8 @@ "value_start": 0, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.48037367471734, @@ -10261,6 +11402,8 @@ "value_start": 0, "value_end": 162, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.231644837540696, @@ -10286,6 +11429,8 @@ "value_start": 0, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.288909765557392, @@ -10311,6 +11456,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.353940312186129, @@ -10336,6 +11483,8 @@ "value_start": 0, "value_end": 16, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.625, @@ -10361,6 +11510,8 @@ "value_start": 8, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.606936732175321, @@ -10369,6 +11520,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "JSON Web Token", + "severity": "medium", + "confidence": "strong", + "line_data_list": [ + { + "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", + "line_num": 1, + "path": "tests/samples/json_web_token", + "info": "tests/samples/json_web_token|RAW", + "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", + "value_start": 10, + "value_end": 75, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.790963630103494, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -10386,6 +11564,8 @@ "value_start": 32, "value_end": 87, "variable": "key", + "variable_start": 28, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.962822440640043, @@ -10411,6 +11591,8 @@ "value_start": 13, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.615822531364292, @@ -10436,6 +11618,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.484377779059832, @@ -10461,6 +11645,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -10486,6 +11672,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -10501,6 +11689,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -10526,6 +11716,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -10551,6 +11743,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -10576,6 +11770,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -10591,6 +11787,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -10616,6 +11814,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -10641,6 +11841,8 @@ "value_start": 5, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.561286684176785, @@ -10658,18 +11860,47 @@ "confidence": "strong", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, "path": "tests/samples/open_ai_token", "info": "tests/samples/open_ai_token|RAW", - "value": "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", + "value": "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", "value_start": 0, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.047085443409471, - "valid": false + "entropy": 5.115027050910027, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "OpenAI Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", + "line_num": 3, + "path": "tests/samples/open_ai_token", + "info": "tests/samples/open_ai_token|RAW", + "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", + "value_start": 0, + "value_end": 56, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.086469255159772, + "valid": true } } ] @@ -10691,6 +11922,8 @@ "value_start": 7, "value_end": 16, "variable": "pw", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.2432750011217983, @@ -10716,6 +11949,8 @@ "value_start": 9, "value_end": 23, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.521640636343319, @@ -10741,6 +11976,8 @@ "value_start": 20, "value_end": 30, "variable": "passwd", + "variable_start": 10, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.121928094887362, @@ -10766,6 +12003,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.125814952938166, @@ -10791,6 +12030,8 @@ "value_start": 13, "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.529698260800009, @@ -10806,6 +12047,8 @@ "value_start": 1, "value_end": 103, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.429600283437103, @@ -10821,6 +12064,8 @@ "value_start": 4, "value_end": 104, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.307627100346911, @@ -10836,6 +12081,8 @@ "value_start": 3, "value_end": 102, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.391947595190542, @@ -10851,6 +12098,8 @@ "value_start": 3, "value_end": 86, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.410712925114303, @@ -10866,6 +12115,8 @@ "value_start": 4, "value_end": 90, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.417032341684991, @@ -10881,6 +12132,8 @@ "value_start": 0, "value_end": 106, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.497697548960288, @@ -10896,6 +12149,8 @@ "value_start": 1, "value_end": 110, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.30959588168204, @@ -10911,6 +12166,8 @@ "value_start": 0, "value_end": 24, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.418295834054489, @@ -10926,6 +12183,8 @@ "value_start": 0, "value_end": 59, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.8721063510981755, @@ -10951,6 +12210,8 @@ "value_start": 16, "value_end": 262, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.884128060579619, @@ -10976,6 +12237,8 @@ "value_start": 0, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0185646866544076, @@ -10991,6 +12254,8 @@ "value_start": 0, "value_end": 120, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2083460372948154, @@ -11006,6 +12271,8 @@ "value_start": 0, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.6977683083639423, @@ -11031,6 +12298,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.48760529131298, @@ -11056,6 +12325,8 @@ "value_start": 0, "value_end": 179, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.493434473754405, @@ -11081,6 +12352,8 @@ "value_start": 11, "value_end": 21, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.321928094887362, @@ -11106,6 +12379,8 @@ "value_start": 0, "value_end": 41, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 1.4322437698226884, @@ -11131,6 +12406,8 @@ "value_start": 11, "value_end": 22, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.963119653306635, @@ -11156,6 +12433,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.838879892515178, @@ -11181,6 +12460,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3705246708692047, @@ -11206,6 +12487,8 @@ "value_start": 18, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.6658566472141003, @@ -11231,6 +12514,8 @@ "value_start": 0, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.029574370937287, @@ -11256,6 +12541,8 @@ "value_start": 21, "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.843520703364327, @@ -11281,6 +12568,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.620007704961091, @@ -11306,6 +12595,8 @@ "value_start": 12, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.472678031846025, @@ -11331,6 +12622,8 @@ "value_start": 0, "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.181675184876157, @@ -11356,6 +12649,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.532808692053926, @@ -11381,6 +12676,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.559610565373458, @@ -11406,6 +12703,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -11431,6 +12730,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -11456,6 +12757,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -11481,6 +12784,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -11506,6 +12811,8 @@ "value_start": 0, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.6983183218203175, @@ -11531,6 +12838,8 @@ "value_start": 0, "value_end": 45, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.697662125333613, @@ -11556,6 +12865,8 @@ "value_start": 4, "value_end": 16, "variable": "PW", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9528822923277263, @@ -11581,6 +12892,8 @@ "value_start": 26, "value_end": 38, "variable": "Password", + "variable_start": 5, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.688721875540867, @@ -11606,6 +12919,8 @@ "value_start": 0, "value_end": 45, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.697662125333613, @@ -11631,6 +12946,8 @@ "value_start": 5, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.253801390571587, @@ -11656,6 +12973,8 @@ "value_start": 5, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.5117321397240526, @@ -11673,17 +12992,19 @@ "confidence": "moderate", "line_data_list": [ { - "line": "the line will be found twice # 100 EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "line": "the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "line_num": 97, "path": "tests/samples/test.html", "info": "tests/samples/test.html|HTML", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "value_start": 35, - "value_end": 77, + "value_end": 122, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, + "entropy": 4.936120692057916, "valid": true } } @@ -11706,6 +13027,8 @@ "value_start": 15, "value_end": 109, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0296677144829305, @@ -11731,6 +13054,8 @@ "value_start": 12, "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "HEX_CHARS", "entropy": 3.7215926003976607, @@ -11739,6 +13064,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "UUID", + "severity": "info", + "confidence": "strong", + "line_data_list": [ + { + "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", + "line_num": 1, + "path": "tests/samples/uuid", + "info": "tests/samples/uuid|RAW", + "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", + "value_start": 0, + "value_end": 36, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.2373263071270246, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -11756,6 +13108,8 @@ "value_start": 7, "value_end": 479, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.396703284270004, diff --git a/tests/data/ml_threshold.json b/tests/data/ml_threshold.json index 389648435..01c1a0929 100644 --- a/tests/data/ml_threshold.json +++ b/tests/data/ml_threshold.json @@ -16,6 +16,8 @@ "value_start": 0, "value_end": 3078, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.4978497506970045, @@ -27,7 +29,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99316, + "ml_probability": 0.999, "rule": "API", "severity": "medium", "confidence": "moderate", @@ -41,6 +43,8 @@ "value_start": 17, "value_end": 38, "variable": "gi_reo_gi_api", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.7835252872760208, @@ -66,6 +70,8 @@ "value_start": 16, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.220175521464345, @@ -83,17 +89,100 @@ "confidence": "strong", "line_data_list": [ { - "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974\"", + "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "tests/samples/atlassian_pat", "info": "", - "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.628712032325118, + "entropy": 5.614483907763351, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "line_num": 2, + "path": "tests/samples/atlassian_pat", + "info": "", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "value_start": 20, + "value_end": 213, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.592654863341127, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "line_num": 3, + "path": "tests/samples/atlassian_pat", + "info": "", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "value_start": 22, + "value_end": 216, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.571478154549278, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "line_num": 4, + "path": "tests/samples/atlassian_pat", + "info": "", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "value_start": 24, + "value_end": 218, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.572975546587697, "valid": true } } @@ -102,7 +191,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99154, + "ml_probability": 0.87, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -116,6 +205,8 @@ "value_start": 28, "value_end": 66, "variable": "kerberos_authentication", + "variable_start": 1, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.273728829005326, @@ -127,7 +218,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99315, + "ml_probability": 0.999, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -141,6 +232,8 @@ "value_start": 18, "value_end": 56, "variable": "authorization", + "variable_start": 1, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.523986065961299, @@ -152,7 +245,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99528, + "ml_probability": 0.99, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -166,6 +259,8 @@ "value_start": 44, "value_end": 76, "variable": "oauth_signature", + "variable_start": 27, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.288909765557392, @@ -177,7 +272,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99667, + "ml_probability": 0.999, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -191,6 +286,8 @@ "value_start": 30, "value_end": 56, "variable": "Authorization", + "variable_start": 9, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.085055102756476, @@ -202,7 +299,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99711, + "ml_probability": 0.963, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -216,31 +313,8 @@ "value_start": 31, "value_end": 65, "variable": "Authorization", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.2479906920322064, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99711, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", - "line_num": 9, - "path": "tests/samples/auth_n.template", - "info": "", - "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", - "value_start": 31, - "value_end": 65, - "variable": null, + "variable_start": 9, + "variable_end": 22, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2479906920322064, @@ -266,6 +340,8 @@ "value_start": 14, "value_end": 34, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -291,6 +367,8 @@ "value_start": 35, "value_end": 55, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -316,6 +394,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -341,6 +421,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -356,6 +438,8 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -364,6 +448,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.924, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "AKIAGIREOGIAWSKEY123", + "value_start": 17, + "value_end": 37, + "variable": "AwsAccessKey", + "variable_start": 1, + "variable_end": 13, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.5464393446710156, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -381,6 +492,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -406,6 +519,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -421,6 +536,89 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.012814895472355, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.922, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "AKIAGIREOGIAWSKEY555", + "value_start": 58, + "value_end": 78, + "variable": "AwsAccessKey2", + "variable_start": 41, + "variable_end": 54, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.3086949695628425, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.453, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsSecretKey\":\"CrackleGiReoGi123CrackleGiReoGi123AWSkey\"", + "line_num": 4, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "CrackleGiReoGi123CrackleGiReoGi123AWSkey", + "value_start": 16, + "value_end": 56, + "variable": "AwsSecretKey", + "variable_start": 1, + "variable_end": 13, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.012814895472355, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.453, + "rule": "Secret", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsSecretKey\":\"CrackleGiReoGi123CrackleGiReoGi123AWSkey\"", + "line_num": 4, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "CrackleGiReoGi123CrackleGiReoGi123AWSkey", + "value_start": 16, + "value_end": 56, + "variable": "AwsSecretKey", + "variable_start": 1, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -446,6 +644,8 @@ "value_start": 15, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -456,8 +656,8 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.994, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -471,6 +671,8 @@ "value_start": 15, "value_end": 60, "variable": "AWS_MWS_KEY", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -496,6 +698,8 @@ "value_start": 18, "value_end": 66, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.52467389677155, @@ -521,6 +725,8 @@ "value_start": 0, "value_end": 1316, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.615950458346115, @@ -535,7 +741,7 @@ "ml_probability": null, "rule": "JSON Web Token", "severity": "medium", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -546,6 +752,8 @@ "value_start": 0, "value_end": 1316, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.615950458346115, @@ -554,6 +762,60 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Azure Access Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "JSON Web Token", + "severity": "medium", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -571,6 +833,8 @@ "value_start": 14, "value_end": 54, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.620007704961091, @@ -596,6 +860,8 @@ "value_start": 15, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.826255561405635, @@ -621,6 +887,8 @@ "value_start": 11, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.593400348604437, @@ -646,6 +914,8 @@ "value_start": 22, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.9477027792200903, @@ -671,6 +941,8 @@ "value_start": 28, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.3125, @@ -688,17 +960,46 @@ "confidence": "strong", "line_data_list": [ { - "line": "repo_access = \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7\"", + "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "tests/samples/bitbucket_repository_access_token", "info": "", - "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7", - "value_start": 15, - "value_end": 207, + "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", + "value_start": 39, + "value_end": 231, "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.573080311527303, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.966, + "rule": "Token", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", + "line_num": 1, + "path": "tests/samples/bitbucket_repository_access_token", + "info": "", + "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", + "value_start": 39, + "value_end": 231, + "variable": "Bitbucket Repository Access Token", + "variable_start": 1, + "variable_end": 34, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.559335469855166, + "entropy": 5.573080311527303, "valid": true } } @@ -707,7 +1008,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98984, + "ml_probability": 0.998, "rule": "Certificate", "severity": "medium", "confidence": "moderate", @@ -721,6 +1022,8 @@ "value_start": 25, "value_end": 165, "variable": "certificatePEM", + "variable_start": 6, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.133473310626378, @@ -732,7 +1035,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99879, + "ml_probability": 0.996, "rule": "Credential", "severity": "medium", "confidence": "moderate", @@ -746,6 +1049,8 @@ "value_start": 24, "value_end": 38, "variable": "gi_reo_gi_credential", + "variable_start": 0, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6644977792004623, @@ -771,6 +1076,8 @@ "value_start": 14, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.9136769977597905, @@ -796,6 +1103,8 @@ "value_start": 0, "value_end": 71, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.5117321397240526, @@ -806,14 +1115,41 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94217, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Discord Bot Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "ID:master,PW:dipPr10Gg!", + "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", + "line_num": 1, + "path": "tests/samples/discord_bot_token", + "info": "", + "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", + "value_start": 0, + "value_end": 72, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.731746181697384, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.775, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "ID:master,PW:dipPr10Gg!", "line_num": 1, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "", @@ -821,6 +1157,8 @@ "value_start": 13, "value_end": 23, "variable": "master,PW", + "variable_start": 3, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -832,7 +1170,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78111, + "ml_probability": 0.402, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -846,6 +1184,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.7897352853986264, @@ -857,7 +1197,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.81375, + "ml_probability": 0.327, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -871,6 +1211,8 @@ "value_start": 16, "value_end": 26, "variable": "PW", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -882,7 +1224,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97553, + "ml_probability": 0.881, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -896,6 +1238,8 @@ "value_start": 25, "value_end": 35, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -907,7 +1251,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98957, + "ml_probability": 0.977, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -921,6 +1265,8 @@ "value_start": 19, "value_end": 29, "variable": "master,password", + "variable_start": 3, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -932,7 +1278,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98178, + "ml_probability": 0.786, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -946,6 +1292,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -957,7 +1305,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97951, + "ml_probability": 0.982, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -971,6 +1319,8 @@ "value_start": 19, "value_end": 29, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -982,7 +1332,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98937, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -996,6 +1346,8 @@ "value_start": 21, "value_end": 31, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1007,7 +1359,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99239, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1021,6 +1373,8 @@ "value_start": 25, "value_end": 35, "variable": "master,password", + "variable_start": 9, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1032,7 +1386,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96152, + "ml_probability": 0.812, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1046,6 +1400,8 @@ "value_start": 20, "value_end": 31, "variable": "pwd", + "variable_start": 16, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1057,7 +1413,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94337, + "ml_probability": 0.941, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1071,6 +1427,8 @@ "value_start": 22, "value_end": 33, "variable": "master,password", + "variable_start": 6, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.712675334928137, @@ -1082,7 +1440,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90819, + "ml_probability": 0.573, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1096,6 +1454,8 @@ "value_start": 14, "value_end": 25, "variable": "PWD", + "variable_start": 10, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1107,7 +1467,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96069, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1121,6 +1481,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1132,7 +1494,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9855, + "ml_probability": 0.975, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1146,6 +1508,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1157,7 +1521,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99273, + "ml_probability": 0.963, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1171,6 +1535,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1182,7 +1548,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97227, + "ml_probability": 0.97, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1196,6 +1562,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1207,7 +1575,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98513, + "ml_probability": 0.972, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1221,6 +1589,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1232,7 +1602,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98967, + "ml_probability": 0.965, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1246,6 +1616,8 @@ "value_start": 25, "value_end": 36, "variable": "master,password", + "variable_start": 9, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1257,7 +1629,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98433, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1271,6 +1643,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1282,7 +1656,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96661, + "ml_probability": 0.926, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1296,6 +1670,8 @@ "value_start": 19, "value_end": 30, "variable": "passwd", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1307,7 +1683,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9157, + "ml_probability": 0.954, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1321,6 +1697,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1332,7 +1710,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90242, + "ml_probability": 0.558, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1346,6 +1724,8 @@ "value_start": 15, "value_end": 26, "variable": "pass", + "variable_start": 10, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1357,7 +1737,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93864, + "ml_probability": 0.735, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1371,6 +1751,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1382,7 +1764,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99393, + "ml_probability": 0.928, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1396,6 +1778,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1407,7 +1791,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98374, + "ml_probability": 0.893, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1421,6 +1805,8 @@ "value_start": 23, "value_end": 34, "variable": "master,password", + "variable_start": 7, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1432,7 +1818,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9868, + "ml_probability": 0.791, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1446,6 +1832,8 @@ "value_start": 43, "value_end": 54, "variable": "Password", + "variable_start": 34, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1457,7 +1845,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97173, + "ml_probability": 0.915, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1471,6 +1859,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pw", + "variable_start": 6, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1482,7 +1872,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98572, + "ml_probability": 0.941, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1496,6 +1886,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1507,7 +1899,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96866, + "ml_probability": 0.639, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1521,6 +1913,8 @@ "value_start": 22, "value_end": 33, "variable": "Pwd", + "variable_start": 18, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1532,7 +1926,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97155, + "ml_probability": 0.945, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1546,6 +1940,8 @@ "value_start": 22, "value_end": 33, "variable": "Password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1557,7 +1953,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9814, + "ml_probability": 0.85, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1571,6 +1967,8 @@ "value_start": 27, "value_end": 38, "variable": "Password", + "variable_start": 18, + "variable_end": 26, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1582,7 +1980,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9683, + "ml_probability": 0.893, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1596,6 +1994,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1607,7 +2007,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98092, + "ml_probability": 0.811, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1621,6 +2021,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1632,7 +2034,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98723, + "ml_probability": 0.973, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1646,6 +2048,8 @@ "value_start": 26, "value_end": 37, "variable": "password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1657,7 +2061,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.995, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1671,6 +2075,8 @@ "value_start": 28, "value_end": 39, "variable": "master,ANYpassword", + "variable_start": 9, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1682,7 +2088,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99217, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1696,6 +2102,8 @@ "value_start": 31, "value_end": 42, "variable": "ANYpassword", + "variable_start": 19, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1707,7 +2115,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99366, + "ml_probability": 0.949, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1721,6 +2129,8 @@ "value_start": 14, "value_end": 25, "variable": "master,PWD", + "variable_start": 3, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1732,7 +2142,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98726, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1746,6 +2156,8 @@ "value_start": 15, "value_end": 26, "variable": "PASS", + "variable_start": 10, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1757,7 +2169,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98166, + "ml_probability": 0.99, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1771,6 +2183,8 @@ "value_start": 22, "value_end": 33, "variable": "passwd", + "variable_start": 15, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1782,7 +2196,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98929, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1796,6 +2210,8 @@ "value_start": 22, "value_end": 33, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1807,7 +2223,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9941, + "ml_probability": 0.849, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1821,6 +2237,8 @@ "value_start": 17, "value_end": 28, "variable": "master,pass", + "variable_start": 5, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1832,7 +2250,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99533, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1846,6 +2264,8 @@ "value_start": 9, "value_end": 20, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1857,7 +2277,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99094, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1871,6 +2291,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1882,7 +2304,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99616, + "ml_probability": 0.977, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1896,6 +2318,8 @@ "value_start": 15, "value_end": 26, "variable": "master,pass", + "variable_start": 3, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1907,7 +2331,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98161, + "ml_probability": 0.928, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1921,6 +2345,8 @@ "value_start": 13, "value_end": 24, "variable": "pw", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1929,35 +2355,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", - "line_num": 50, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "98.76.54.32", - "value_start": 1, - "value_end": 12, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93832, + "ml_probability": 0.472, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1971,6 +2372,8 @@ "value_start": 26, "value_end": 37, "variable": "PW", + "variable_start": 23, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1982,7 +2385,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96866, + "ml_probability": 0.736, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1996,6 +2399,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2007,7 +2412,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97171, + "ml_probability": 0.629, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2021,6 +2426,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2032,7 +2439,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.984, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2046,6 +2453,8 @@ "value_start": 28, "value_end": 39, "variable": "Password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2057,7 +2466,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99749, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2071,6 +2480,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2082,7 +2493,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99451, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2096,6 +2507,8 @@ "value_start": 24, "value_end": 35, "variable": "ANY_pass", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2107,7 +2520,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99606, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2121,6 +2534,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2132,7 +2547,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99761, + "ml_probability": 0.986, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2146,6 +2561,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pwd", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2157,7 +2574,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99759, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2171,6 +2588,8 @@ "value_start": 33, "value_end": 44, "variable": "master,ANY_password", + "variable_start": 13, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2182,7 +2601,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99134, + "ml_probability": 0.987, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2196,6 +2615,8 @@ "value_start": 32, "value_end": 43, "variable": "master,ANY_password", + "variable_start": 12, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2207,7 +2628,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97394, + "ml_probability": 0.976, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2221,6 +2642,8 @@ "value_start": 25, "value_end": 36, "variable": "ANY_PASS", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2232,7 +2655,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97418, + "ml_probability": 0.652, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2246,6 +2669,8 @@ "value_start": 34, "value_end": 45, "variable": "password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2257,7 +2682,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98534, + "ml_probability": 0.438, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2271,6 +2696,8 @@ "value_start": 38, "value_end": 49, "variable": "PWD", + "variable_start": 34, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2282,7 +2709,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99043, + "ml_probability": 0.989, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2296,6 +2723,8 @@ "value_start": 23, "value_end": 34, "variable": "password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2307,7 +2736,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99413, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2321,6 +2750,8 @@ "value_start": 33, "value_end": 44, "variable": "ANY-password", + "variable_start": 20, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2332,7 +2763,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98612, + "ml_probability": 0.855, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2346,6 +2777,8 @@ "value_start": 21, "value_end": 32, "variable": "pass", + "variable_start": 16, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2357,7 +2790,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9925, + "ml_probability": 0.925, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2371,6 +2804,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2382,7 +2817,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98443, + "ml_probability": 0.921, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2396,6 +2831,8 @@ "value_start": 15, "value_end": 26, "variable": "master,PW", + "variable_start": 5, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2407,7 +2844,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98844, + "ml_probability": 0.944, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2421,6 +2858,8 @@ "value_start": 17, "value_end": 28, "variable": "pass", + "variable_start": 12, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2432,7 +2871,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99429, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2446,6 +2885,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2457,7 +2898,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99609, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2471,6 +2912,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2482,7 +2925,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99555, + "ml_probability": 0.993, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2496,6 +2939,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2507,7 +2952,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98078, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2521,6 +2966,8 @@ "value_start": 20, "value_end": 31, "variable": "master,PW", + "variable_start": 10, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2532,7 +2979,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99698, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2546,6 +2993,8 @@ "value_start": 19, "value_end": 30, "variable": "Password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2557,7 +3006,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99697, + "ml_probability": 0.993, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2571,6 +3020,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2582,7 +3033,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99288, + "ml_probability": 0.975, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2596,6 +3047,8 @@ "value_start": 23, "value_end": 34, "variable": "Password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2607,7 +3060,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98647, + "ml_probability": 0.759, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2621,6 +3074,8 @@ "value_start": 18, "value_end": 29, "variable": "Pwd", + "variable_start": 14, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2632,7 +3087,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96062, + "ml_probability": 0.538, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2646,6 +3101,8 @@ "value_start": 21, "value_end": 32, "variable": "pw", + "variable_start": 18, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2657,32 +3114,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98849, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id/pw id:master pw:dipPr185Gg!", - "line_num": 86, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr185Gg!", - "value_start": 19, - "value_end": 30, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98849, + "ml_probability": 0.766, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2696,6 +3128,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2707,7 +3141,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99555, + "ml_probability": 0.971, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2721,6 +3155,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pwd", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2732,7 +3168,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98872, + "ml_probability": 0.839, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2746,6 +3182,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2757,7 +3195,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9858, + "ml_probability": 0.871, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2771,6 +3209,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2782,7 +3222,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97663, + "ml_probability": 0.51, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2796,6 +3236,8 @@ "value_start": 3, "value_end": 14, "variable": "PW", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2804,35 +3246,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", - "line_num": 95, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "98.76.54.32", - "value_start": 31, - "value_end": 42, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97658, + "ml_probability": 0.904, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2846,6 +3263,8 @@ "value_start": 16, "value_end": 27, "variable": "pw", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2854,35 +3273,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32 mailto:{1} (password-dipPr196Gg!) # skip", - "line_num": 97, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98485, + "ml_probability": 0.973, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2896,6 +3290,8 @@ "value_start": 14, "value_end": 25, "variable": "pw", + "variable_start": 11, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2907,7 +3303,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9931, + "ml_probability": 0.2, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2921,6 +3317,8 @@ "value_start": 25, "value_end": 36, "variable": "master@example.com,pw", + "variable_start": 3, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2932,7 +3330,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98537, + "ml_probability": 0.076, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2946,6 +3344,8 @@ "value_start": 25, "value_end": 34, "variable": "master@example.com,pw", + "variable_start": 3, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.595488890170944, @@ -2957,7 +3357,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.82012, + "ml_probability": 0.178, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2971,6 +3371,8 @@ "value_start": 6, "value_end": 21, "variable": "PW", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.64643122256795, @@ -2982,7 +3384,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.853, + "ml_probability": 0.577, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2996,6 +3398,8 @@ "value_start": 12, "value_end": 27, "variable": "Password", + "variable_start": 3, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.64643122256795, @@ -3007,7 +3411,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93163, + "ml_probability": 0.269, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3021,6 +3425,8 @@ "value_start": 8, "value_end": 23, "variable": "Pass", + "variable_start": 3, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.64643122256795, @@ -3032,7 +3438,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.46234, + "ml_probability": 0.466, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3046,6 +3452,8 @@ "value_start": 6, "value_end": 21, "variable": "PW", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3859718495273823, @@ -3057,7 +3465,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94939, + "ml_probability": 0.117, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3071,6 +3479,8 @@ "value_start": 6, "value_end": 21, "variable": "PW", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.64643122256795, @@ -3082,7 +3492,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96971, + "ml_probability": 0.968, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3096,6 +3506,8 @@ "value_start": 18, "value_end": 33, "variable": "password", + "variable_start": 9, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.64643122256795, @@ -3107,7 +3519,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9804, + "ml_probability": 0.921, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3121,6 +3533,8 @@ "value_start": 10, "value_end": 25, "variable": "passwd", + "variable_start": 3, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.64643122256795, @@ -3129,35 +3543,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", - "line_num": 11, - "path": "tests/samples/doc_id_passwd_pair", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.36505, + "ml_probability": 0.435, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3171,6 +3560,8 @@ "value_start": 25, "value_end": 35, "variable": "PW", + "variable_start": 22, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.65754247590989, @@ -3182,7 +3573,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.81258, + "ml_probability": 0.035, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3196,6 +3587,8 @@ "value_start": 7, "value_end": 23, "variable": "PW", + "variable_start": 4, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -3207,7 +3600,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90956, + "ml_probability": 0.135, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3221,6 +3614,8 @@ "value_start": 6, "value_end": 22, "variable": "PW", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -3229,35 +3624,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32 id/pw:master/iPp19@GRq", - "line_num": 20, - "path": "tests/samples/doc_id_passwd_pair", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86488, + "ml_probability": 0.745, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3271,6 +3641,8 @@ "value_start": 18, "value_end": 34, "variable": "pw", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -3282,32 +3654,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.88303, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id/pass:master,iPp20@GRq", - "line_num": 21, - "path": "tests/samples/doc_id_passwd_pair", - "info": "", - "value": "master,iPp20@GRq", - "value_start": 8, - "value_end": 24, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.5, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.83284, + "ml_probability": 0.236, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3321,6 +3668,8 @@ "value_start": 7, "value_end": 23, "variable": "PWD", + "variable_start": 3, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -3332,7 +3681,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.83065, + "ml_probability": 0.222, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3346,6 +3695,8 @@ "value_start": 9, "value_end": 25, "variable": "pwd", + "variable_start": 5, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.625, @@ -3357,7 +3708,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98612, + "ml_probability": 0.567, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3371,6 +3722,8 @@ "value_start": 10, "value_end": 26, "variable": "pass", + "variable_start": 5, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -3382,7 +3735,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97221, + "ml_probability": 0.874, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3396,6 +3749,8 @@ "value_start": 12, "value_end": 28, "variable": "Password", + "variable_start": 3, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -3407,7 +3762,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94576, + "ml_probability": 0.195, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3421,6 +3776,8 @@ "value_start": 6, "value_end": 22, "variable": "PW", + "variable_start": 3, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -3432,7 +3789,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3446,6 +3803,8 @@ "value_start": 9, "value_end": 18, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3457,7 +3816,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6758, + "ml_probability": 0.847, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3471,6 +3830,8 @@ "value_start": 3, "value_end": 12, "variable": "pw", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3482,7 +3843,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.939, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3496,6 +3857,8 @@ "value_start": 9, "value_end": 18, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3507,7 +3870,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.968, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3521,6 +3884,8 @@ "value_start": 4, "value_end": 13, "variable": "pwd", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3532,7 +3897,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3546,6 +3911,8 @@ "value_start": 13, "value_end": 22, "variable": "ANY_password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3557,7 +3924,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.967, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3571,6 +3938,8 @@ "value_start": 5, "value_end": 14, "variable": "pass", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3582,7 +3951,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.984, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3596,6 +3965,8 @@ "value_start": 13, "value_end": 22, "variable": "ANY-password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3604,35 +3975,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32 password:Prl23Db#@", - "line_num": 14, - "path": "tests/samples/doc_passwd_pair", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.75257, + "ml_probability": 0.952, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3646,6 +3992,8 @@ "value_start": 28, "value_end": 37, "variable": "password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3657,7 +4005,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6758, + "ml_probability": 0.931, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3671,6 +4019,8 @@ "value_start": 7, "value_end": 16, "variable": "ANY_PW", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3682,7 +4032,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.951, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3696,6 +4046,8 @@ "value_start": 17, "value_end": 26, "variable": "password", + "variable_start": 8, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3707,7 +4059,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.982, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3721,6 +4073,8 @@ "value_start": 12, "value_end": 21, "variable": "password", + "variable_start": 1, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3732,7 +4086,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.883, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3746,6 +4100,8 @@ "value_start": 7, "value_end": 16, "variable": "Passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3757,7 +4113,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.00758, + "ml_probability": 0.229, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3767,13 +4123,42 @@ "line_num": 24, "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "Prl23Db#@,password:Prl23Db#@", + "value": "Prl23Db#@", "value_start": 3, - "value_end": 31, + "value_end": 12, "variable": "PW", + "variable_start": 0, + "variable_end": 2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.4654972233440207, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.946, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "PW:Prl23Db#@,password:Prl23Db#@", + "line_num": 24, + "path": "tests/samples/doc_passwd_pair", + "info": "", + "value": "Prl23Db#@", + "value_start": 22, + "value_end": 31, + "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.107390027967994, + "entropy": 2.4654972233440207, "valid": false } } @@ -3782,7 +4167,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.11604, + "ml_probability": 0.926, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3792,13 +4177,15 @@ "line_num": 25, "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "Prl23Db#@,\ube44\ubc88:Prl23Db#@", + "value": "Prl23Db#@", "value_start": 9, - "value_end": 31, + "value_end": 18, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.2014564845873714, + "entropy": 2.4654972233440207, "valid": false } } @@ -3807,7 +4194,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3821,6 +4208,8 @@ "value_start": 7, "value_end": 16, "variable": "passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3832,23 +4221,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.00654, + "ml_probability": 0.939, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", - "line_num": 31, + "line": "password:Prl23Db#@, paasword:Prl23Db#@", + "line_num": 30, "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "Prl23Db#@,ANYPassword:Prl23Db#@", + "value": "Prl23Db#@", "value_start": 9, - "value_end": 40, + "value_end": 18, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.3014558953337074, + "entropy": 2.4654972233440207, "valid": false } } @@ -3857,23 +4248,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.00839, + "ml_probability": 0.967, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Password:Prl23Db#@,pwd=Prl23Db#@", - "line_num": 32, + "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", + "line_num": 31, "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "Prl23Db#@,pwd=Prl23Db#@", + "value": "Prl23Db#@", "value_start": 9, - "value_end": 32, - "variable": "Password", + "value_end": 18, + "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.931483269957663, + "entropy": 2.4654972233440207, "valid": false } } @@ -3882,20 +4275,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_password:Prl23Db#@", - "line_num": 34, + "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", + "line_num": 31, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 13, - "value_end": 22, - "variable": "ANY_password", + "value_start": 31, + "value_end": 40, + "variable": "ANYPassword", + "variable_start": 19, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3907,20 +4302,103 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.886, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "--password=Prl23Db#@", - "line_num": 37, + "line": "Password:Prl23Db#@,pwd=Prl23Db#@", + "line_num": 32, + "path": "tests/samples/doc_passwd_pair", + "info": "", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "Password", + "variable_start": 0, + "variable_end": 8, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.4654972233440207, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.67, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "Password:Prl23Db#@,pwd=Prl23Db#@", + "line_num": 32, + "path": "tests/samples/doc_passwd_pair", + "info": "", + "value": "Prl23Db#@", + "value_start": 23, + "value_end": 32, + "variable": "pwd", + "variable_start": 19, + "variable_end": 22, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.4654972233440207, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.985, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "ANY_password:Prl23Db#@", + "line_num": 34, + "path": "tests/samples/doc_passwd_pair", + "info": "", + "value": "Prl23Db#@", + "value_start": 13, + "value_end": 22, + "variable": "ANY_password", + "variable_start": 0, + "variable_end": 12, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.4654972233440207, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.951, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "--password=Prl23Db#@", + "line_num": 37, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", "value_start": 11, "value_end": 20, "variable": "password", + "variable_start": 2, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3932,7 +4410,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.822, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3946,6 +4424,8 @@ "value_start": 29, "value_end": 38, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3957,7 +4437,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, + "ml_probability": 0.767, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3971,6 +4451,8 @@ "value_start": 48, "value_end": 57, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3982,7 +4464,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.916, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -3996,6 +4478,8 @@ "value_start": 19, "value_end": 28, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4007,7 +4491,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.992, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4021,6 +4505,8 @@ "value_start": 12, "value_end": 21, "variable": "ANYpassword", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4032,7 +4518,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.992, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4046,6 +4532,8 @@ "value_start": 10, "value_end": 19, "variable": "passwords", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4057,7 +4545,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4071,6 +4559,8 @@ "value_start": 10, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -4082,7 +4572,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.31407, + "ml_probability": 0.488, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4096,6 +4586,8 @@ "value_start": 12, "value_end": 16, "variable": "password", + "variable_start": 2, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 1.5, @@ -4107,7 +4599,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99405, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4121,6 +4613,8 @@ "value_start": 10, "value_end": 25, "variable": "ANY-Token", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4132,7 +4626,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99422, + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4146,6 +4640,8 @@ "value_start": 6, "value_end": 21, "variable": "token", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4157,7 +4653,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99416, + "ml_probability": 1.0, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4171,6 +4667,8 @@ "value_start": 11, "value_end": 26, "variable": "KEY", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4182,7 +4680,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99416, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4196,6 +4694,8 @@ "value_start": 11, "value_end": 26, "variable": "SECRET KEY", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4207,7 +4707,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99893, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4221,6 +4721,8 @@ "value_start": 7, "value_end": 22, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4232,7 +4734,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99885, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4246,6 +4748,8 @@ "value_start": 7, "value_end": 22, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4257,7 +4761,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99349, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4271,6 +4775,8 @@ "value_start": 10, "value_end": 25, "variable": "ANY_token", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4282,7 +4788,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99863, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4296,6 +4802,8 @@ "value_start": 11, "value_end": 27, "variable": "ANY.secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -4307,7 +4815,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99902, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4321,6 +4829,8 @@ "value_start": 9, "value_end": 25, "variable": "secret", + "variable_start": 2, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4332,7 +4842,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99908, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4346,6 +4856,8 @@ "value_start": 11, "value_end": 27, "variable": "ANY_secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4357,7 +4869,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99572, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4371,6 +4883,8 @@ "value_start": 7, "value_end": 23, "variable": "Token", + "variable_start": 1, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4382,7 +4896,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99809, + "ml_probability": 1.0, "rule": "API", "severity": "medium", "confidence": "moderate", @@ -4396,6 +4910,8 @@ "value_start": 11, "value_end": 27, "variable": "API Secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4407,7 +4923,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99809, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4421,6 +4937,8 @@ "value_start": 11, "value_end": 27, "variable": "Secret", + "variable_start": 4, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4432,7 +4950,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96195, + "ml_probability": 0.998, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4446,6 +4964,8 @@ "value_start": 11, "value_end": 27, "variable": "key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4457,7 +4977,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99482, + "ml_probability": 1.0, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4471,6 +4991,8 @@ "value_start": 11, "value_end": 27, "variable": "Key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4482,7 +5004,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99482, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4496,6 +5018,8 @@ "value_start": 11, "value_end": 27, "variable": "Secret Key", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4507,7 +5031,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97555, + "ml_probability": 0.994, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4521,6 +5045,8 @@ "value_start": 8, "value_end": 24, "variable": "ANY_key", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4532,7 +5058,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9969, + "ml_probability": 0.999, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4546,6 +5072,8 @@ "value_start": 14, "value_end": 30, "variable": "secret-ANYkey", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4557,7 +5085,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9969, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -4571,6 +5099,8 @@ "value_start": 14, "value_end": 30, "variable": "secret-ANYkey", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0, @@ -4582,7 +5112,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99157, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4596,6 +5126,8 @@ "value_start": 34, "value_end": 50, "variable": "ANY_token", + "variable_start": 24, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4607,7 +5139,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99506, + "ml_probability": 1.0, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -4621,6 +5153,8 @@ "value_start": 13, "value_end": 29, "variable": "access_token", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4632,7 +5166,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.95206, + "ml_probability": 0.995, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -4646,6 +5180,8 @@ "value_start": 19, "value_end": 35, "variable": "Authentication key", + "variable_start": 0, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4657,7 +5193,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.95206, + "ml_probability": 0.995, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -4671,6 +5207,8 @@ "value_start": 19, "value_end": 35, "variable": "key", + "variable_start": 15, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4682,23 +5220,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.01957, - "rule": "Token", + "ml_probability": 0.031, + "rule": "Key", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Enter token : This is a query parameter", - "line_num": 40, + "line": "page.action?spaceKey=LOGIC&title=QUANTUM\",", + "line_num": 39, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "This", - "value_start": 14, - "value_end": 18, - "variable": "token", + "value": "LOGIC", + "value_start": 21, + "value_end": 26, + "variable": "spaceKey", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.0, + "entropy": 2.321928094887362, "valid": false } } @@ -4707,98 +5247,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.00012, - "rule": "Key", + "ml_probability": 0.001, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\"key\":\"attached_file_0\"", - "line_num": 41, + "line": "Enter token : This is a query parameter", + "line_num": 40, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "attached_file_0", - "value_start": 7, - "value_end": 22, - "variable": "key", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.985971849527383, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32 (master/IhqSb1Gg)", - "line_num": 1, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(master/IhqSb1Gg)", - "line_num": 2, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 3, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 7, + "value": "This", + "value_start": 14, "value_end": 18, - "variable": null, + "variable": "token", + "variable_start": 6, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.0, "valid": false } } @@ -4807,7 +5274,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.85092, + "ml_probability": 0.956, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4821,6 +5288,8 @@ "value_start": 22, "value_end": 31, "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -4832,7 +5301,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.896, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4846,6 +5315,8 @@ "value_start": 42, "value_end": 50, "variable": "PW", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -4857,7 +5328,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7574, + "ml_probability": 0.943, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4871,6 +5342,8 @@ "value_start": 9, "value_end": 24, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -4879,35 +5352,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", - "line_num": 6, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.972, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -4921,6 +5369,8 @@ "value_start": 44, "value_end": 53, "variable": "PW", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -4931,24 +5381,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", "line_num": 7, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 49, + "value_end": 57, + "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -4957,23 +5409,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", - "line_num": 7, + "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", + "line_num": 11, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg", - "value_start": 49, - "value_end": 57, + "value": "IhqSb1Gg)", + "value_start": 62, + "value_end": 71, "variable": "password", + "variable_start": 53, + "variable_end": 61, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -4981,24 +5435,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.996, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 11, + "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", + "line_num": 15, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", + "value": "IhqSb1Gg", "value_start": 29, - "value_end": 40, - "variable": null, + "value_end": 37, + "variable": "pwd", + "variable_start": 25, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5007,20 +5463,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 0.933, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 11, + "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", + "line_num": 16, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg)", - "value_start": 62, - "value_end": 71, - "variable": "password", + "value_start": 13, + "value_end": 22, + "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5031,146 +5489,23 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.979, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 xxxx (master/IhqSb1Gg)", - "line_num": 14, + "line": "98.76.54.32(pw:IhqSb1Gg)", + "line_num": 17, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", - "line_num": 15, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", - "line_num": 15, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 29, - "value_end": 37, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78926, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", - "line_num": 16, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 13, - "value_end": 22, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(pw:IhqSb1Gg)", - "line_num": 17, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "98.76.54.32(pw:IhqSb1Gg)", - "line_num": 17, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 15, - "value_end": 24, - "variable": "pw", + "value": "IhqSb1Gg)", + "value_start": 15, + "value_end": 24, + "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5179,35 +5514,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32/pw:IhqSb1Gg", - "line_num": 19, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98813, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5221,6 +5531,8 @@ "value_start": 15, "value_end": 23, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5232,7 +5544,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.972, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5246,6 +5558,8 @@ "value_start": 42, "value_end": 50, "variable": "pw", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5257,7 +5571,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.966, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5271,6 +5585,8 @@ "value_start": 47, "value_end": 55, "variable": "PWD", + "variable_start": 43, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5279,35 +5595,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 22, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 18, - "value_end": 29, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.982, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5321,6 +5612,8 @@ "value_start": 45, "value_end": 54, "variable": "pw", + "variable_start": 42, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5329,35 +5622,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 23, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.899, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5371,6 +5639,8 @@ "value_start": 40, "value_end": 49, "variable": "pw", + "variable_start": 37, + "variable_end": 39, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5382,7 +5652,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.981, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5396,6 +5666,8 @@ "value_start": 45, "value_end": 53, "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5404,35 +5676,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 25, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5446,6 +5693,8 @@ "value_start": 50, "value_end": 59, "variable": "password", + "variable_start": 41, + "variable_end": 49, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5454,35 +5703,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} master/IhqSb1Gg", - "line_num": 26, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5496,6 +5720,8 @@ "value_start": 48, "value_end": 56, "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5507,7 +5733,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99714, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5521,6 +5747,8 @@ "value_start": 21, "value_end": 29, "variable": "ANY_password,default", + "variable_start": 0, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5532,7 +5760,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92567, + "ml_probability": 0.894, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -5546,6 +5774,8 @@ "value_start": 15, "value_end": 23, "variable": "Key(ANYSecret)", + "variable_start": 0, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5557,7 +5787,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92567, + "ml_probability": 0.894, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -5571,6 +5801,8 @@ "value_start": 15, "value_end": 23, "variable": "ANYSecret)", + "variable_start": 4, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5581,24 +5813,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.997, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { "line": "98.76.54.32 ANY_PW:IhqSb1Gg", "line_num": 34, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 19, + "value_end": 27, + "variable": "ANY_PW", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5607,98 +5841,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9819, + "ml_probability": 0.938, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 ANY_PW:IhqSb1Gg", - "line_num": 34, + "line": "98.76.54.32(ID/PW:IhqSb1Gg)", + "line_num": 36, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg", - "value_start": 19, + "value": "IhqSb1Gg)", + "value_start": 18, "value_end": 27, - "variable": "ANY_PW", + "variable": "PW", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(ID/PW:IhqSb1Gg)", - "line_num": 36, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "98.76.54.32(ID/PW:IhqSb1Gg)", - "line_num": 36, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 18, - "value_end": 27, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", - "line_num": 38, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -5707,7 +5868,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 0.992, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5721,6 +5882,8 @@ "value_start": 30, "value_end": 39, "variable": "pwd", + "variable_start": 26, + "variable_end": 29, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5732,7 +5895,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5746,6 +5909,8 @@ "value_start": 20, "value_end": 28, "variable": "password for master", + "variable_start": 0, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5754,48 +5919,25 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32(master/IhqSb1Gg)", - "line_num": 44, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78926, + "ml_probability": 0.984, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:xxxx(ANYpw:IhqSb1Gg)", + "line": "id:xxxx(ANYpw:IhqSb1Ga)", "line_num": 46, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg)", + "value": "IhqSb1Ga)", "value_start": 14, "value_end": 23, "variable": "ANYpw", + "variable_start": 8, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5804,35 +5946,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", - "line_num": 47, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99334, + "ml_probability": 0.1, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5846,6 +5963,8 @@ "value_start": 28, "value_end": 36, "variable": "gildong.hong@98.76.54.32,pw", + "variable_start": 0, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5854,110 +5973,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(master/IhqSb1Gg,master/IhqSb1Gg)", - "line_num": 48, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(master/IhqSb1Gg master/IhqSb1Gg)", - "line_num": 49, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "xxxx:98.76.54.32(master/IhqSb1Gg)", - "line_num": 50, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 5, - "value_end": 16, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", - "line_num": 51, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, + "ml_probability": 0.896, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5971,6 +5990,8 @@ "value_start": 20, "value_end": 29, "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5982,7 +6003,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7574, + "ml_probability": 0.01, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -5996,6 +6017,8 @@ "value_start": 17, "value_end": 32, "variable": "Password-xxxx", + "variable_start": 3, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -6004,35 +6027,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", - "line_num": 56, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.949, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6046,6 +6044,8 @@ "value_start": 28, "value_end": 36, "variable": "PW", + "variable_start": 25, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6054,35 +6054,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "http|https://98.76.54.32/xxxx(master/IhqSb1Gg)", - "line_num": 59, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6096,6 +6071,8 @@ "value_start": 22, "value_end": 30, "variable": "ANY_pwd", + "variable_start": 14, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6107,7 +6084,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6121,6 +6098,8 @@ "value_start": 34, "value_end": 42, "variable": "Password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6132,7 +6111,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.70183, + "ml_probability": 0.953, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6146,6 +6125,8 @@ "value_start": 20, "value_end": 29, "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6157,7 +6138,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6171,6 +6152,8 @@ "value_start": 26, "value_end": 34, "variable": "PasswordANY", + "variable_start": 14, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6182,7 +6165,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92685, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6196,6 +6179,8 @@ "value_start": 17, "value_end": 26, "variable": "password(default", + "variable_start": 0, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6204,35 +6189,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(ID/PW:master/IhqSb1Gg)", - "line_num": 70, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.00461, + "ml_probability": 0.131, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6246,6 +6206,8 @@ "value_start": 18, "value_end": 34, "variable": "PW", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.75, @@ -6257,7 +6219,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.51005, + "ml_probability": 0.603, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6271,6 +6233,8 @@ "value_start": 9, "value_end": 24, "variable": "PWD)", + "variable_start": 4, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.906890595608518, @@ -6279,35 +6243,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 73, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.85092, + "ml_probability": 0.956, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6321,6 +6260,8 @@ "value_start": 22, "value_end": 31, "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -6329,35 +6270,10 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32,PW:IhqSb1Gg", - "line_num": 74, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99334, + "ml_probability": 0.029, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -6371,6 +6287,8 @@ "value_start": 22, "value_end": 30, "variable": "master@98.76.54.32,PW", + "variable_start": 0, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6381,24 +6299,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.99, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { "line": "98.76.54.32 pw:IhqSb1Gg", "line_num": 75, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 15, + "value_end": 23, + "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6407,20 +6327,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9819, + "ml_probability": 0.976, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 pw:IhqSb1Gg", - "line_num": 75, + "line": "config:xxxx,PW:IhqSb1Gg", + "line_num": 78, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", "value_start": 15, "value_end": 23, - "variable": "pw", + "variable": "xxxx,PW", + "variable_start": 7, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6432,20 +6354,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99082, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "config:xxxx,PW:IhqSb1Gg", - "line_num": 78, + "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 82, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "xxxx,PW", + "value_start": 43, + "value_end": 51, + "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6456,24 +6380,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.952, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32-->master/IhqSb1Gg", - "line_num": 81, + "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", + "line_num": 83, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 38, + "value_end": 46, + "variable": "pw", + "variable_start": 35, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6481,24 +6407,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.943, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 82, + "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 84, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 39, + "value_end": 47, + "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6507,20 +6435,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 82, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", + "line_num": 85, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", "value_start": 43, "value_end": 51, "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6532,20 +6462,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.995, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", - "line_num": 83, + "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", + "line_num": 87, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 38, - "value_end": 46, - "variable": "pw", + "value_start": 45, + "value_end": 53, + "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6556,24 +6488,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.996, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 84, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", + "line_num": 90, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 44, + "value_end": 52, + "variable": "pw", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6582,23 +6516,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 84, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", + "line_num": 93, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg", - "value_start": 39, - "value_end": 47, - "variable": "pw", + "value": "IhqSb1Gg)", + "value_start": 45, + "value_end": 54, + "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -6606,24 +6542,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.997, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", - "line_num": 85, + "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", + "line_num": 94, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 46, + "value_end": 55, + "variable": "password", + "variable_start": 37, + "variable_end": 45, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -6632,20 +6570,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.995, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", - "line_num": 85, + "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", + "line_num": 96, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": ",pw", + "value_start": 45, + "value_end": 53, + "variable": "Password", + "variable_start": 36, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6656,24 +6596,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.979, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (master/IhqSb1Gg)", - "line_num": 86, + "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", + "line_num": 97, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 42, + "value_end": 51, + "variable": "pass", + "variable_start": 37, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -6681,24 +6623,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.994, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", - "line_num": 87, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 100, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 18, - "value_end": 29, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 43, + "value_end": 51, + "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6707,20 +6651,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99261, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", - "line_num": 87, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", + "line_num": 101, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, - "variable": "pwd", + "variable": "pass", + "variable_start": 40, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6731,24 +6677,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 (master/IhqSb1Gg)", - "line_num": 88, + "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", + "line_num": 102, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 44, + "value_end": 52, + "variable": "password", + "variable_start": 35, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6756,24 +6704,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:[1} \uacc4\uc815master/IhqSb1Gg", - "line_num": 89, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", + "line_num": 104, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 49, + "value_end": 57, + "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6781,24 +6731,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.934, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", - "line_num": 90, + "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", + "line_num": 105, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 47, + "value_end": 55, + "variable": "pw", + "variable_start": 44, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -6807,20 +6759,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.97, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", - "line_num": 90, + "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", + "line_num": 106, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 44, - "value_end": 52, + "value_start": 39, + "value_end": 47, "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -6831,24 +6785,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.978, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (\ube44\ubc88 IhqSb1Gg)", - "line_num": 91, + "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", + "line_num": 108, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 26, + "value_end": 35, + "variable": "pw", + "variable_start": 23, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -6858,23 +6814,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", + "rule": "Dropbox API secret (long term)", + "severity": "high", "confidence": "weak", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password IhqSb1Gg", - "line_num": 92, - "path": "tests/samples/doc_various", + "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", + "line_num": 1, + "path": "tests/samples/dropbox_api_secret_long_term", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, + "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", + "value_start": 9, + "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false + "entropy": 4.89361507332541, + "valid": true } } ] @@ -6883,48 +6841,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", + "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", - "line_num": 93, - "path": "tests/samples/doc_various", + "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", + "line_num": 1, + "path": "tests/samples/dropbox_app_secret", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, + "value": "wpv1jq9xwanbn3n", + "value_start": 24, + "value_end": 39, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", - "line_num": 93, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 45, - "value_end": 54, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.4565647621309536, + "valid": true } } ] @@ -6933,48 +6868,52 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Dropbox OAuth2 API Access Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 94, - "path": "tests/samples/doc_various", + "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", + "line_num": 1, + "path": "tests/samples/dropbox_oauth_token", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, + "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", + "value_start": 15, + "value_end": 153, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false + "entropy": 5.395844179446957, + "valid": true } } ] }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Dynatrace API Token", + "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 94, - "path": "tests/samples/doc_various", + "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", + "line_num": 1, + "path": "tests/samples/dynatrace_api.hs", "info": "", - "value": "IhqSb1Gg)", - "value_start": 46, - "value_end": 55, - "variable": "password", + "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", + "value_start": 0, + "value_end": 96, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false + "entropy": 4.808191506786782, + "valid": true } } ] @@ -6983,23 +6922,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Facebook Access Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", - "line_num": 96, - "path": "tests/samples/doc_various", + "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", + "line_num": 1, + "path": "tests/samples/facebook_key", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + "value_start": 28, + "value_end": 115, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false + "entropy": 4.936120692057916, + "valid": true } } ] @@ -7007,24 +6948,26 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", + "ml_probability": 0.999, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", - "line_num": 96, - "path": "tests/samples/doc_various", + "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", + "line_num": 1, + "path": "tests/samples/facebook_key", "info": "", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "Password", + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + "value_start": 28, + "value_end": 115, + "variable": "GI_REO_GI_FACEBOOK_TOKEN", + "variable_start": 0, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false + "entropy": 4.936120692057916, + "valid": true } } ] @@ -7033,48 +6976,52 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Facebook App Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", - "line_num": 97, - "path": "tests/samples/doc_various", + "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", + "line_num": 2, + "path": "tests/samples/facebook_key", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, + "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", + "value_start": 0, + "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.2089099270924217, + "valid": true } } ] }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Firebase Domain", + "severity": "info", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", - "line_num": 97, - "path": "tests/samples/doc_various", + "line": "test-app-domain-42.firebaseapp.com", + "line_num": 1, + "path": "tests/samples/firebase_domain", "info": "", - "value": "IhqSb1Gg)", - "value_start": 42, - "value_end": 51, - "variable": "pass", + "value": "test-app-domain-42.firebaseapp.com", + "value_start": 0, + "value_end": 34, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.4347510262969525, + "valid": true } } ] @@ -7083,23 +7030,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", + "rule": "Firebase Domain", "severity": "info", - "confidence": "weak", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (xxxx//IhqSb1Gg)", - "line_num": 99, - "path": "tests/samples/doc_various", + "line": "test2.io.firebaseio.com", + "line_num": 2, + "path": "tests/samples/firebase_domain", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, + "value": "test2.io.firebaseio.com", + "value_start": 0, + "value_end": 23, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.1394163745499943, + "valid": true } } ] @@ -7108,723 +7057,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 100, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 100, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", - "line_num": 101, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", - "line_num": 101, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", - "line_num": 102, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 44, - "value_end": 52, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", - "line_num": 104, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", - "line_num": 104, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 49, - "value_end": 57, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", - "line_num": 105, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 47, - "value_end": 55, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", - "line_num": 106, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 39, - "value_end": 47, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ID/PW 98.76.54.32:xxx master/IhqSb1Gg", - "line_num": 107, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 6, - "value_end": 17, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", - "line_num": 108, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78636, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", - "line_num": 108, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 26, - "value_end": 35, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox API secret (long term)", - "severity": "high", - "confidence": "weak", - "line_data_list": [ - { - "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", - "line_num": 1, - "path": "tests/samples/dropbox_api_secret_long_term", - "info": "", - "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", - "value_start": 9, - "value_end": 73, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.89361507332541, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox App secret", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", - "line_num": 1, - "path": "tests/samples/dropbox_app_secret", - "info": "", - "value": "wpv1jq9xwanbn3n", - "value_start": 24, - "value_end": 39, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.4565647621309536, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox OAuth2 API Access Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", - "line_num": 1, - "path": "tests/samples/dropbox_oauth_token", - "info": "", - "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", - "value_start": 15, - "value_end": 153, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.395844179446957, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dynatrace API Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", - "line_num": 1, - "path": "tests/samples/dynatrace_api.hs", - "info": "", - "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", - "value_start": 0, - "value_end": 96, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.808191506786782, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Facebook Access Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", - "line_num": 1, - "path": "tests/samples/facebook_key", - "info": "", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "value_start": 28, - "value_end": 70, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", - "line_num": 1, - "path": "tests/samples/facebook_key", - "info": "", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "value_start": 28, - "value_end": 70, - "variable": "GI_REO_GI_FACEBOOK_TOKEN", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Firebase Domain", - "severity": "info", - "confidence": "moderate", - "line_data_list": [ - { - "line": "test-app-domain-42.firebaseapp.com", - "line_num": 1, - "path": "tests/samples/firebase_domain", - "info": "", - "value": "test-app-domain-42.firebaseapp.com", - "value_start": 0, - "value_end": 34, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.4347510262969525, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Firebase Domain", - "severity": "info", - "confidence": "moderate", - "line_data_list": [ - { - "line": "test2.io.firebaseio.com", - "line_num": 2, - "path": "tests/samples/firebase_domain", - "info": "", - "value": "test2.io.firebaseio.com", - "value_start": 0, - "value_end": 23, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.1394163745499943, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Classic Token", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", - "line_num": 1, - "path": "tests/samples/github_classic_token", - "info": "", - "value": "ghp_00000000000000000000000000000004WZ4EQ", - "value_start": 0, - "value_end": 41, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 1.4322437698226884, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Fine-granted Token", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "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", - "line_num": 2, - "path": "tests/samples/github_fine_granted_token", - "info": "", - "value": "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", - "value_start": 0, - "value_end": 93, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.255374790203285, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99798, - "rule": "Github Old Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "", - "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", - "value_start": 23, - "value_end": 63, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.246439344671015, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99798, - "rule": "Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "", - "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", - "value_start": 23, - "value_end": 63, - "variable": "GITHUB_ACCESS_TOKEN", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.246439344671015, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab Incoming Email Token", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "var email_t = '7e4v6v5j2nepcc8f5zvatgl9g';", - "line_num": 1, - "path": "tests/samples/gitlab_email_token", - "info": "", - "value": "7e4v6v5j2nepcc8f5zvatgl9g", - "value_start": 15, - "value_end": 40, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.133660689688185, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab Feed Token", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "feed_n = 'o9aEaH32LN618KhF7e_L'", - "line_num": 1, - "path": "tests/samples/gitlab_feed_token", - "info": "", - "value": "o9aEaH32LN618KhF7e_L", - "value_start": 10, - "value_end": 30, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.9058316901429944, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab PAT", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "var pat = 'glpat-a6N2pFAr2L2A6iRsA_mw';", - "line_num": 1, - "path": "tests/samples/gitlab_pat_api", - "info": "", - "value": "glpat-a6N2pFAr2L2A6iRsA_mw", - "value_start": 11, - "value_end": 37, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.7423376242715105, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab Pipeline Trigger Token", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "trigger = 'glptt-33276248c9748113e978392e5c074b7f974f8683';", - "line_num": 1, - "path": "tests/samples/gitlab_pipeline_trigger_token", - "info": "", - "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", - "value_start": 11, - "value_end": 57, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.8494857514609038, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab Registration Runner Token", + "rule": "Github Classic Token", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "gitlab_runner = 'GR1348941jG6xeSsmN8DFVKoyBYu2';", + "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", "line_num": 1, - "path": "tests/samples/gitlab_registration_runner", + "path": "tests/samples/github_classic_token", "info": "", - "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", - "value_start": 17, - "value_end": 46, + "value": "ghp_00000000000000000000000000000004WZ4EQ", + "value_start": 0, + "value_end": 41, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.582118926162056, - "valid": true + "entropy": 1.4322437698226884, + "valid": false } } ] @@ -7833,47 +7084,51 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Registration Runner Token 2023", + "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "return \"glrt-2CR8_eVxiio-1QmzPZwa\"", - "line_num": 1, - "path": "tests/samples/gitlab_registration_runner_2023", + "line": "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", + "line_num": 2, + "path": "tests/samples/github_fine_granted_token", "info": "", - "value": "glrt-2CR8_eVxiio-1QmzPZwa", - "value_start": 8, - "value_end": 33, + "value": "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", + "value_start": 0, + "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.006593447001756, - "valid": false + "entropy": 5.255374790203285, + "valid": true } } ] }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Google API Key", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Github Old Token", "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "AIzaGiReoG-CrackleCrackle12315618_12315", + "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", "line_num": 1, - "path": "tests/samples/google_api_key.toml", + "path": "tests/samples/github_key.groovy", "info": "", - "value": "AIzaGiReoG-CrackleCrackle12315618_12315", - "value_start": 0, - "value_end": 39, + "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", + "value_start": 23, + "value_end": 63, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.165196181720608, + "entropy": 4.246439344671015, "valid": true } } @@ -7881,41 +7136,28 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Google Multi", - "severity": "high", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Token", + "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", - "line_num": 2, - "path": "tests/samples/google_multi", + "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", + "line_num": 1, + "path": "tests/samples/github_key.groovy", "info": "", - "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", - "value_start": 0, - "value_end": 72, - "variable": null, + "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", + "value_start": 23, + "value_end": 63, + "variable": "GITHUB_ACCESS_TOKEN", + "variable_start": 0, + "variable_end": 19, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.531537327540733, + "iterator": "BASE36_CHARS", + "entropy": 4.246439344671015, "valid": true } - }, - { - "line": "4L2QMyTm6Rr0o46ytGiReoG1", - "line_num": 4, - "path": "tests/samples/google_multi", - "info": "", - "value": "4L2QMyTm6Rr0o46ytGiReoG1", - "value_start": 0, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.084962500721157, - "valid": false - } } ] }, @@ -7923,39 +7165,26 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google Multi", - "severity": "high", - "confidence": "moderate", + "rule": "Gitlab Incoming Email Token", + "severity": "info", + "confidence": "weak", "line_data_list": [ { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", + "line": "var email_t = '7e4v6v5j2nepcc8f5zvatgl9g';", + "line_num": 1, + "path": "tests/samples/gitlab_email_token", "info": "", - "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", - "value_start": 6, - "value_end": 78, + "value": "7e4v6v5j2nepcc8f5zvatgl9g", + "value_start": 15, + "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.531537327540733, + "iterator": "BASE36_CHARS", + "entropy": 4.133660689688185, "valid": true } - }, - { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", - "info": "", - "value": "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", - "value_start": 90, - "value_end": 125, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.436181130262395, - "valid": false - } } ] }, @@ -7963,22 +7192,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Secret", - "severity": "high", - "confidence": "strong", + "rule": "Gitlab Feed Token", + "severity": "info", + "confidence": "weak", "line_data_list": [ { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", + "line": "feed_n = 'o9aEaH32LN618KhF7e_L'", + "line_num": 1, + "path": "tests/samples/gitlab_feed_token", "info": "", - "value": "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", - "value_start": 90, - "value_end": 125, + "value": "o9aEaH32LN618KhF7e_L", + "value_start": 10, + "value_end": 30, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.436181130262395, + "entropy": 3.9058316901429944, "valid": false } } @@ -7988,73 +7219,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Access Token", + "rule": "Gitlab PAT", "severity": "high", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line": "var pat = 'glpat-a6N2pFAr2L2A6iRsA_mw';", "line_num": 1, - "path": "tests/samples/google_oauth_key", + "path": "tests/samples/gitlab_pat_api", "info": "", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, + "value": "glpat-a6N2pFAr2L2A6iRsA_mw", + "value_start": 11, + "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Auth", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", - "line_num": 1, - "path": "tests/samples/google_oauth_key", - "info": "", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, - "variable": "google_oauth_key", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Key", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", - "line_num": 1, - "path": "tests/samples/google_oauth_key", - "info": "", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, - "variable": "google_oauth_key", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, - "valid": true + "iterator": "BASE64_CHARS", + "entropy": 3.7423376242715105, + "valid": false } } ] @@ -8063,22 +7246,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Access Policy Token", + "rule": "Gitlab Pipeline Trigger Token", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", + "line": "trigger = 'glptt-33276248c9748113e978392e5c074b7f974f8683';", "line_num": 1, - "path": "tests/samples/grafana_access_policy_token", + "path": "tests/samples/gitlab_pipeline_trigger_token", "info": "", - "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", - "value_start": 18, - "value_end": 130, + "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", + "value_start": 11, + "value_end": 57, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.097632476604024, + "iterator": "BASE36_CHARS", + "entropy": 3.8494857514609038, "valid": true } } @@ -8088,23 +7273,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Provisioned API Key", + "rule": "Gitlab Registration Runner Token", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line": "gitlab_runner = 'GR1348941jG6xeSsmN8DFVKoyBYu2';", "line_num": 1, - "path": "tests/samples/grafana_provisioned_api_key", + "path": "tests/samples/gitlab_registration_runner", "info": "", - "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", - "value_start": 11, - "value_end": 107, + "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", + "value_start": 17, + "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.8153130511409934, - "valid": false + "entropy": 4.582118926162056, + "valid": true } } ] @@ -8113,22 +7300,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", + "rule": "Gitlab Registration Runner Token 2023", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line": "return \"glrt-2CR8_eVxiio-1QmzPZwa\"", "line_num": 1, - "path": "tests/samples/grafana_provisioned_api_key", + "path": "tests/samples/gitlab_registration_runner_2023", "info": "", - "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", - "value_start": 11, - "value_end": 107, + "value": "glrt-2CR8_eVxiio-1QmzPZwa", + "value_start": 8, + "value_end": 33, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.8153130511409934, + "entropy": 4.006593447001756, "valid": false } } @@ -8138,22 +7327,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Heroku API Key", + "rule": "Google API Key", "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", + "line": "AIzaGiReoG-CrackleCrackle12315618_12315", "line_num": 1, - "path": "tests/samples/heroku_api.toml", + "path": "tests/samples/google_api_key.toml", "info": "", - "value": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", + "value": "AIzaGiReoG-CrackleCrackle12315618_12315", "value_start": 0, - "value_end": 37, + "value_end": 39, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.48037367471734, + "entropy": 3.165196181720608, "valid": true } } @@ -8163,47 +7354,41 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Instagram Access Token", + "rule": "Google Multi", "severity": "high", - "confidence": "strong", + "confidence": "moderate", "line_data_list": [ { - "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", - "line_num": 1, - "path": "tests/samples/instagram_access_token", + "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "line_num": 2, + "path": "tests/samples/google_multi", "info": "", - "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", + "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", "value_start": 0, - "value_end": 162, + "value_end": 72, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.231644837540696, + "entropy": 4.531537327540733, "valid": true } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ + }, { - "line": "100.64.0.0/10", - "line_num": 13, - "path": "tests/samples/ipv4", + "line": "4L2QMyTm6Rr0o46ytGiReoG1", + "line_num": 4, + "path": "tests/samples/google_multi", "info": "", - "value": "100.64.0.0", + "value": "4L2QMyTm6Rr0o46ytGiReoG1", "value_start": 0, - "value_end": 10, + "value_end": 24, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.5253496664211537, + "entropy": 4.084962500721157, "valid": false } } @@ -8213,47 +7398,41 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google Multi", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "100.64.0.0\u2013100.127.255.255", - "line_num": 14, - "path": "tests/samples/ipv4", + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", "info": "", - "value": "100.127.255.255", - "value_start": 11, - "value_end": 26, + "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", + "value_start": 6, + "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.008519976342584, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 4.531537327540733, + "valid": true } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ + }, { - "line": "100.64.0.0\u2013100.127.255.255", - "line_num": 14, - "path": "tests/samples/ipv4", + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", "info": "", - "value": "100.64.0.0", - "value_start": 0, - "value_end": 10, + "value": "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", + "value_start": 90, + "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.5253496664211537, + "entropy": 4.436181130262395, "valid": false } } @@ -8263,22 +7442,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google OAuth Secret", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.0.0.0\u2013192.0.0.255", - "line_num": 22, - "path": "tests/samples/ipv4", + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", "info": "", - "value": "192.0.0.255", - "value_start": 10, - "value_end": 21, + "value": "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", + "value_start": 90, + "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.9704957226453073, + "entropy": 4.436181130262395, "valid": false } } @@ -8288,23 +7469,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google OAuth Access Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "192.88.99.0/24", - "line_num": 25, - "path": "tests/samples/ipv4", + "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line_num": 1, + "path": "tests/samples/google_oauth_key", "info": "", - "value": "192.88.99.0", - "value_start": 0, - "value_end": 11, + "value": "ya29.gi_reo_gi_crackle_ln22", + "value_start": 20, + "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 1.9018695860849921, - "valid": false + "entropy": 3.1797273164975133, + "valid": true } } ] @@ -8313,23 +7496,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Grafana Access Policy Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.88.99.0\u2013192.88.99.255", - "line_num": 26, - "path": "tests/samples/ipv4", + "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", + "line_num": 1, + "path": "tests/samples/grafana_access_policy_token", "info": "", - "value": "192.88.99.0", - "value_start": 0, - "value_end": 11, + "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", + "value_start": 18, + "value_end": 130, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 1.9018695860849921, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.097632476604024, + "valid": true } } ] @@ -8338,22 +7523,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Grafana Provisioned API Key", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.88.99.0\u2013192.88.99.255", - "line_num": 26, - "path": "tests/samples/ipv4", + "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line_num": 1, + "path": "tests/samples/grafana_provisioned_api_key", "info": "", - "value": "192.88.99.255", - "value_start": 12, - "value_end": 25, + "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", + "value_start": 11, + "value_end": 107, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.019193052249804, + "entropy": 3.8153130511409934, "valid": false } } @@ -8363,23 +7550,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Grafana Service Account Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2004:5678::9324", - "line_num": 12, - "path": "tests/samples/ipv6", + "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", + "line_num": 1, + "path": "tests/samples/grafana_service_accounts", "info": "", - "value": "2004:5678::9324", + "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, - "value_end": 15, + "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.725512476486815, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 4.52211252299684, + "valid": true } } ] @@ -8388,23 +7577,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Hashicorp Terraform Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2004::5678:9", - "line_num": 13, - "path": "tests/samples/ipv6", + "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", + "line_num": 1, + "path": "tests/samples/hashicorp_terraform", "info": "", - "value": "2004::5678:9", + "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, - "value_end": 12, + "value_end": 90, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.5220552088742005, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.348551883097512, + "valid": true } } ] @@ -8413,23 +7604,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", - "confidence": "strong", + "rule": "Heroku API Key", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "2041:0000:140F::875B:131B", - "line_num": 14, - "path": "tests/samples/ipv6", + "line": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", + "line_num": 1, + "path": "tests/samples/heroku_api.toml", "info": "", - "value": "2041:0000:140F::875B:131B", + "value": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", "value_start": 0, - "value_end": 25, + "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "HEX_CHARS", - "entropy": 2.6146939516467023, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.48037367471734, + "valid": true } } ] @@ -8438,23 +7631,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Instagram Access Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2041:0:140F::875B:131B", - "line_num": 15, - "path": "tests/samples/ipv6", + "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", + "line_num": 1, + "path": "tests/samples/instagram_access_token", "info": "", - "value": "2041:0:140F::875B:131B", + "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, - "value_end": 22, + "value_end": 162, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "HEX_CHARS", - "entropy": 2.684338637030481, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.231644837540696, + "valid": true } } ] @@ -8462,7 +7657,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8476,6 +7671,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8073549220576046, @@ -8501,6 +7698,8 @@ "value_start": 0, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.288909765557392, @@ -8526,6 +7725,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.353940312186129, @@ -8551,6 +7752,8 @@ "value_start": 0, "value_end": 16, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.625, @@ -8576,6 +7779,8 @@ "value_start": 8, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.606936732175321, @@ -8586,24 +7791,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99105, + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, "rule": "JSON Web Token", "severity": "medium", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { - "line": "$payload = 'eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlEJOpS'", + "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, - "path": "tests/samples/json_web_token.hs", + "path": "tests/samples/json_web_token", "info": "", - "value": "eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlEJOpS", - "value_start": 12, - "value_end": 60, + "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", + "value_start": 10, + "value_end": 75, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.520488802699322, + "entropy": 4.790963630103494, "valid": true } } @@ -8612,7 +7819,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99911, + "ml_probability": 0.458, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -8626,6 +7833,8 @@ "value_start": 11, "value_end": 335, "variable": "prKeyValid", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.428808109703668, @@ -8637,7 +7846,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99907, + "ml_probability": 0.998, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -8651,6 +7860,8 @@ "value_start": 32, "value_end": 72, "variable": "secret_looks_like_linux_path_1", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.8341837197791895, @@ -8662,7 +7873,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99958, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -8676,6 +7887,8 @@ "value_start": 32, "value_end": 72, "variable": "secret_looks_like_linux_path_2", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8687,7 +7900,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99955, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -8701,6 +7914,8 @@ "value_start": 32, "value_end": 72, "variable": "secret_looks_like_linux_path_3", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.8341837197791895, @@ -8712,7 +7927,34 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98676, + "ml_probability": 0.999, + "rule": "Secret", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", + "line_num": 5, + "path": "tests/samples/key.hs", + "info": "", + "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", + "value_start": 32, + "value_end": 72, + "variable": "secret_looks_like_linux_path__", + "variable_start": 0, + "variable_end": 30, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.8530559073332755, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.996, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -8726,6 +7968,8 @@ "value_start": 32, "value_end": 87, "variable": "key", + "variable_start": 28, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.962822440640043, @@ -8751,6 +7995,8 @@ "value_start": 13, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.615822531364292, @@ -8776,6 +8022,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.484377779059832, @@ -8801,6 +8049,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8826,6 +8076,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8841,6 +8093,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8852,7 +8106,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99792, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -8866,6 +8120,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8891,6 +8147,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8916,6 +8174,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8931,6 +8191,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8942,7 +8204,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99792, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -8956,6 +8218,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8967,7 +8231,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9812, + "ml_probability": 0.998, "rule": "Nonce", "severity": "medium", "confidence": "moderate", @@ -8981,6 +8245,8 @@ "value_start": 9, "value_end": 41, "variable": "nonce", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.390319531114783, @@ -9006,6 +8272,8 @@ "value_start": 5, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.561286684176785, @@ -9023,18 +8291,47 @@ "confidence": "strong", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, "path": "tests/samples/open_ai_token", "info": "", - "value": "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", + "value": "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", "value_start": 0, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.047085443409471, - "valid": false + "entropy": 5.115027050910027, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "OpenAI Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", + "line_num": 3, + "path": "tests/samples/open_ai_token", + "info": "", + "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", + "value_start": 0, + "value_end": 56, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.086469255159772, + "valid": true } } ] @@ -9042,7 +8339,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.30171, + "ml_probability": 0.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9056,6 +8353,8 @@ "value_start": 11, "value_end": 37, "variable": "MYSQLPASS", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.688513556888096, @@ -9067,7 +8366,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98995, + "ml_probability": 0.98, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9081,6 +8380,8 @@ "value_start": 7, "value_end": 16, "variable": "my_pw", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.2432750011217983, @@ -9092,7 +8393,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99448, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9106,6 +8407,8 @@ "value_start": 24, "value_end": 36, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2862156256610597, @@ -9117,7 +8420,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92289, + "ml_probability": 0.038, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9131,6 +8434,8 @@ "value_start": 27, "value_end": 36, "variable": "passwd", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9477027792200903, @@ -9142,7 +8447,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96972, + "ml_probability": 0.087, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9156,6 +8461,8 @@ "value_start": 17, "value_end": 26, "variable": "passworsd", + "variable_start": 3, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.169925001442312, @@ -9167,7 +8474,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99646, + "ml_probability": 0.904, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9181,6 +8488,8 @@ "value_start": 17, "value_end": 26, "variable": "passworsd", + "variable_start": 3, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.169925001442312, @@ -9192,7 +8501,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99933, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9206,6 +8515,8 @@ "value_start": 9, "value_end": 23, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.521640636343319, @@ -9217,7 +8528,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99674, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9231,6 +8542,8 @@ "value_start": 20, "value_end": 30, "variable": "gi_reo_gi_passwd", + "variable_start": 0, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.121928094887362, @@ -9242,7 +8555,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99674, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9256,6 +8569,8 @@ "value_start": 58, "value_end": 68, "variable": "password_confirmation", + "variable_start": 33, + "variable_end": 54, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.121928094887362, @@ -9267,7 +8582,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.66622, + "ml_probability": 0.818, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9281,6 +8596,8 @@ "value_start": 12, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, @@ -9292,7 +8609,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9306,6 +8623,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8073549220576046, @@ -9317,7 +8636,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.24405, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9331,6 +8650,8 @@ "value_start": 12, "value_end": 27, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 1.8232156112839757, @@ -9342,7 +8663,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9356,6 +8677,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8073549220576046, @@ -9367,7 +8690,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99077, + "ml_probability": 0.963, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9381,6 +8704,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4063042189065182, @@ -9406,6 +8731,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.125814952938166, @@ -9431,6 +8758,8 @@ "value_start": 13, "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.529698260800009, @@ -9446,6 +8775,8 @@ "value_start": 1, "value_end": 103, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.429600283437103, @@ -9461,6 +8792,8 @@ "value_start": 4, "value_end": 104, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.307627100346911, @@ -9476,6 +8809,8 @@ "value_start": 3, "value_end": 102, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.391947595190542, @@ -9491,6 +8826,8 @@ "value_start": 3, "value_end": 86, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.410712925114303, @@ -9506,6 +8843,8 @@ "value_start": 4, "value_end": 90, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.417032341684991, @@ -9521,6 +8860,8 @@ "value_start": 0, "value_end": 106, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.497697548960288, @@ -9536,6 +8877,8 @@ "value_start": 1, "value_end": 110, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.30959588168204, @@ -9551,6 +8894,8 @@ "value_start": 0, "value_end": 24, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.418295834054489, @@ -9566,6 +8911,8 @@ "value_start": 0, "value_end": 59, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.8721063510981755, @@ -9591,6 +8938,8 @@ "value_start": 16, "value_end": 262, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.884128060579619, @@ -9616,6 +8965,8 @@ "value_start": 0, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0185646866544076, @@ -9631,6 +8982,8 @@ "value_start": 0, "value_end": 120, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2083460372948154, @@ -9646,6 +8999,8 @@ "value_start": 0, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.6977683083639423, @@ -9671,6 +9026,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.48760529131298, @@ -9682,7 +9039,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.66622, + "ml_probability": 0.308, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9696,6 +9053,8 @@ "value_start": 7, "value_end": 14, "variable": "pwd", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, @@ -9721,6 +9080,8 @@ "value_start": 0, "value_end": 179, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.493434473754405, @@ -9732,32 +9093,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99266, - "rule": "Salt", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "var Himalayan_salt = \"$hal$1te$TnnGdhednJsdQ5nfetwZ\";", - "line_num": 1, - "path": "tests/samples/salt.hs", - "info": "", - "value": "$hal$1te$TnnGdhednJsdQ5nfetwZ", - "value_start": 22, - "value_end": 51, - "variable": "Himalayan_salt", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.613714857551378, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98571, + "ml_probability": 0.887, "rule": "Salt", "severity": "medium", "confidence": "moderate", @@ -9771,6 +9107,8 @@ "value_start": 10, "value_end": 29, "variable": "salt1", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.524274220204383, @@ -9782,7 +9120,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.721, + "ml_probability": 0.125, "rule": "Salt", "severity": "medium", "confidence": "moderate", @@ -9796,6 +9134,8 @@ "value_start": 12, "value_end": 22, "variable": "salt2", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.25754247590989, @@ -9807,7 +9147,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98487, + "ml_probability": 0.907, "rule": "Salt", "severity": "medium", "confidence": "moderate", @@ -9821,6 +9161,8 @@ "value_start": 10, "value_end": 25, "variable": "salt3", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.796105389090387, @@ -9832,20 +9174,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.69654, + "ml_probability": 0.816, "rule": "Salt", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "salt4 = {\"salt4\": \"my124%#$@s\\x04clt\\0\"}", + "line": "salt4 = {\"salt5\": \"my124%#$@s\\x04clt\\0\"}", "line_num": 4, "path": "tests/samples/salt.py", "info": "", "value": "my124%#$@s\\x04clt\\0", "value_start": 19, "value_end": 38, - "variable": "salt4", + "variable": "salt5", + "variable_start": 10, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.6959504039350857, @@ -9857,7 +9201,34 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.4468, + "ml_probability": 0.665, + "rule": "Salt", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "json_escaped = \"{\\\\\\\"salt8\\\\\\\":\\\\\\\"4b9a6d8b638eb0c6\\\\\\\"}\"", + "line_num": 5, + "path": "tests/samples/salt.py", + "info": "", + "value": "4b9a6d8b638eb0c6", + "value_start": 35, + "value_end": 51, + "variable": "salt8", + "variable_start": 21, + "variable_end": 26, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.2806390622295662, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.192, "rule": "Secret", "severity": "medium", "confidence": "moderate", @@ -9871,6 +9242,8 @@ "value_start": 10, "value_end": 17, "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, @@ -9896,6 +9269,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3705246708692047, @@ -9921,6 +9296,8 @@ "value_start": 18, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.6658566472141003, @@ -9946,6 +9323,8 @@ "value_start": 0, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.029574370937287, @@ -9971,6 +9350,8 @@ "value_start": 21, "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.843520703364327, @@ -9996,6 +9377,8 @@ "value_start": 12, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.472678031846025, @@ -10021,6 +9404,8 @@ "value_start": 0, "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.181675184876157, @@ -10046,6 +9431,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.532808692053926, @@ -10071,6 +9458,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.559610565373458, @@ -10096,6 +9485,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -10121,6 +9512,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -10146,6 +9539,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -10171,6 +9566,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -10196,6 +9593,8 @@ "value_start": 0, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.6983183218203175, @@ -10221,6 +9620,8 @@ "value_start": 0, "value_end": 45, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.697662125333613, @@ -10229,31 +9630,6 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99704, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", - "line_num": 17, - "path": "tests/samples/test.eml", - "info": "", - "value": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", - "value_start": 0, - "value_end": 76, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.282347539953402, - "valid": true - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -10271,6 +9647,8 @@ "value_start": 15, "value_end": 109, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0296677144829305, @@ -10281,33 +9659,8 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "line_num": 18, - "path": "tests/samples/test2.eml", - "info": "", - "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "value_start": 15, - "value_end": 109, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.0296677144829305, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -10321,6 +9674,8 @@ "value_start": 15, "value_end": 109, "variable": "token in text", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0296677144829305, @@ -10332,7 +9687,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99401, + "ml_probability": 0.804, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -10346,6 +9701,8 @@ "value_start": 19, "value_end": 44, "variable": "gi_reo_gi_token", + "variable_start": 0, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.133660689688186, @@ -10357,7 +9714,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98366, + "ml_probability": 0.716, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -10371,6 +9728,8 @@ "value_start": 19, "value_end": 47, "variable": "DemoToken", + "variable_start": 8, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.039148671903071, @@ -10382,7 +9741,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99833, + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -10396,6 +9755,8 @@ "value_start": 16, "value_end": 48, "variable": "tp_token_value", + "variable_start": 0, + "variable_end": 14, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.6014097655573916, @@ -10421,6 +9782,8 @@ "value_start": 12, "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "HEX_CHARS", "entropy": 3.7215926003976607, @@ -10432,7 +9795,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99877, + "ml_probability": 0.994, "rule": "URL Credentials", "severity": "high", "confidence": "moderate", @@ -10445,7 +9808,9 @@ "value": "dh3sjr8b", "value_start": 22, "value_end": 30, - "variable": null, + "variable": "mongodb://", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -10457,7 +9822,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99634, + "ml_probability": 1.0, "rule": "URL Credentials", "severity": "high", "confidence": "moderate", @@ -10470,7 +9835,9 @@ "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, - "variable": null, + "variable": "dbconnection://", + "variable_start": 32, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.584962500721156, @@ -10479,6 +9846,168 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Credential", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", + "line_num": 3, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "546DFS64N90P3AW7DX%2Fkeep", + "value_start": 49, + "value_end": 74, + "variable": "Credential", + "variable_start": 38, + "variable_end": 48, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.058101942183734, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.993, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "// \"fp://no.host.real/any/path/to/nowhere/\",\"key\":\"f45VgF8jX79o@anydata.com\"", + "line_num": 7, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "f45VgF8jX79o@anydata.com", + "value_start": 51, + "value_end": 75, + "variable": "key", + "variable_start": 45, + "variable_end": 48, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.348308333814105, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.971, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", + "line_num": 10, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "3487263-2384579834-234732875-345", + "value_start": 40, + "value_end": 72, + "variable": "key", + "variable_start": 36, + "variable_end": 39, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.6557496115311405, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Credential", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", + "line_num": 10, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "546DFS64N90P3AW7DX", + "value_start": 17, + "value_end": 35, + "variable": "Credential", + "variable_start": 6, + "variable_end": 16, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.836591668108979, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.989, + "rule": "URL Credentials", + "severity": "high", + "confidence": "moderate", + "line_data_list": [ + { + "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", + "line_num": 13, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "FnD83JZs", + "value_start": 44, + "value_end": 52, + "variable": "smtps://", + "variable_start": 18, + "variable_end": 26, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.0, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "UUID", + "severity": "info", + "confidence": "strong", + "line_data_list": [ + { + "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", + "line_num": 1, + "path": "tests/samples/uuid", + "info": "", + "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", + "value_start": 0, + "value_end": 36, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.2373263071270246, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -10496,6 +10025,8 @@ "value_start": 7, "value_end": 485, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.345127246505981, @@ -10507,7 +10038,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.87752, + "ml_probability": 0.911, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -10521,6 +10052,8 @@ "value_start": 11, "value_end": 18, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, @@ -10532,7 +10065,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.00852, + "ml_probability": 0.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -10546,6 +10079,8 @@ "value_start": 11, "value_end": 28, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.091591477446567, diff --git a/tests/data/output.json b/tests/data/output.json index b32f55041..f6dcde344 100644 --- a/tests/data/output.json +++ b/tests/data/output.json @@ -16,6 +16,8 @@ "value_start": 0, "value_end": 3078, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.4978497506970045, @@ -27,7 +29,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99316, + "ml_probability": 0.999, "rule": "API", "severity": "medium", "confidence": "moderate", @@ -41,6 +43,8 @@ "value_start": 17, "value_end": 38, "variable": "gi_reo_gi_api", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.7835252872760208, @@ -66,6 +70,8 @@ "value_start": 16, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.220175521464345, @@ -83,17 +89,100 @@ "confidence": "strong", "line_data_list": [ { - "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974\"", + "line": "ATLASSIAN = \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\"", "line_num": 1, "path": "tests/samples/atlassian_pat", "info": "", - "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68", "value_start": 13, "value_end": 205, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.628712032325118, + "entropy": 5.614483907763351, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "line_num": 2, + "path": "tests/samples/atlassian_pat", + "info": "", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\=00203E68", + "value_start": 20, + "value_end": 213, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.592654863341127, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "line_num": 3, + "path": "tests/samples/atlassian_pat", + "info": "", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68", + "value_start": 22, + "value_end": 216, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.571478154549278, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Atlassian PAT token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "line_num": 4, + "path": "tests/samples/atlassian_pat", + "info": "", + "value": "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68", + "value_start": 24, + "value_end": 218, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.572975546587697, "valid": true } } @@ -102,7 +191,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99154, + "ml_probability": 0.87, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -116,6 +205,8 @@ "value_start": 28, "value_end": 66, "variable": "kerberos_authentication", + "variable_start": 1, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.273728829005326, @@ -127,7 +218,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99315, + "ml_probability": 0.999, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -141,6 +232,8 @@ "value_start": 18, "value_end": 56, "variable": "authorization", + "variable_start": 1, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.523986065961299, @@ -152,7 +245,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99528, + "ml_probability": 0.99, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -166,6 +259,8 @@ "value_start": 44, "value_end": 76, "variable": "oauth_signature", + "variable_start": 27, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.288909765557392, @@ -177,7 +272,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99667, + "ml_probability": 0.999, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -191,6 +286,8 @@ "value_start": 30, "value_end": 56, "variable": "Authorization", + "variable_start": 9, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.085055102756476, @@ -202,7 +299,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99711, + "ml_probability": 0.963, "rule": "Auth", "severity": "medium", "confidence": "moderate", @@ -216,31 +313,8 @@ "value_start": 31, "value_end": 65, "variable": "Authorization", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.2479906920322064, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99711, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "curl -H \"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\" http://localhost:8080/.", - "line_num": 9, - "path": "tests/samples/auth_n.template", - "info": "", - "value": "eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj", - "value_start": 31, - "value_end": 65, - "variable": null, + "variable_start": 9, + "variable_end": 22, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2479906920322064, @@ -266,6 +340,8 @@ "value_start": 14, "value_end": 34, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -291,6 +367,8 @@ "value_start": 35, "value_end": 55, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -316,6 +394,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -341,6 +421,8 @@ "value_start": 17, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -356,6 +438,8 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -364,6 +448,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.924, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "AKIAGIREOGIAWSKEY123", + "value_start": 17, + "value_end": 37, + "variable": "AwsAccessKey", + "variable_start": 1, + "variable_end": 13, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.5464393446710156, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -381,6 +492,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -406,6 +519,8 @@ "value_start": 58, "value_end": 78, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.3086949695628425, @@ -421,6 +536,8 @@ "value_start": 16, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.012814895472355, @@ -429,6 +546,33 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.922, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "AKIAGIREOGIAWSKEY555", + "value_start": 58, + "value_end": 78, + "variable": "AwsAccessKey2", + "variable_start": 41, + "variable_end": 54, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.3086949695628425, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -446,6 +590,8 @@ "value_start": 15, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -456,8 +602,8 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.994, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -471,6 +617,8 @@ "value_start": 15, "value_end": 60, "variable": "AWS_MWS_KEY", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -496,6 +644,8 @@ "value_start": 18, "value_end": 66, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.52467389677155, @@ -521,6 +671,8 @@ "value_start": 0, "value_end": 1316, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.615950458346115, @@ -535,7 +687,7 @@ "ml_probability": null, "rule": "JSON Web Token", "severity": "medium", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -546,6 +698,8 @@ "value_start": 0, "value_end": 1316, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.615950458346115, @@ -554,6 +708,60 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Azure Access Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "JSON Web Token", + "severity": "medium", + "confidence": "strong", + "line_data_list": [ + { + "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "line_num": 2, + "path": "tests/samples/azure_access_token", + "info": "", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt", + "value_start": 0, + "value_end": 1029, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.6044494049575055, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -571,6 +779,8 @@ "value_start": 14, "value_end": 54, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.620007704961091, @@ -596,6 +806,8 @@ "value_start": 15, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.826255561405635, @@ -621,6 +833,8 @@ "value_start": 11, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.593400348604437, @@ -646,6 +860,8 @@ "value_start": 22, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.9477027792200903, @@ -671,6 +887,8 @@ "value_start": 28, "value_end": 60, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.3125, @@ -688,17 +906,46 @@ "confidence": "strong", "line_data_list": [ { - "line": "repo_access = \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7\"", + "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", "line_num": 1, "path": "tests/samples/bitbucket_repository_access_token", "info": "", - "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7", - "value_start": 15, - "value_end": 207, + "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", + "value_start": 39, + "value_end": 231, "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.573080311527303, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.966, + "rule": "Token", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "\"Bitbucket Repository Access Token\" : \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\"", + "line_num": 1, + "path": "tests/samples/bitbucket_repository_access_token", + "info": "", + "value": "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD", + "value_start": 39, + "value_end": 231, + "variable": "Bitbucket Repository Access Token", + "variable_start": 1, + "variable_end": 34, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.559335469855166, + "entropy": 5.573080311527303, "valid": true } } @@ -707,7 +954,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98984, + "ml_probability": 0.998, "rule": "Certificate", "severity": "medium", "confidence": "moderate", @@ -721,6 +968,8 @@ "value_start": 25, "value_end": 165, "variable": "certificatePEM", + "variable_start": 6, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.133473310626378, @@ -732,7 +981,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99879, + "ml_probability": 0.996, "rule": "Credential", "severity": "medium", "confidence": "moderate", @@ -746,6 +995,8 @@ "value_start": 24, "value_end": 38, "variable": "gi_reo_gi_credential", + "variable_start": 0, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6644977792004623, @@ -771,6 +1022,8 @@ "value_start": 14, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.9136769977597905, @@ -796,6 +1049,8 @@ "value_start": 0, "value_end": 71, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.5117321397240526, @@ -806,25 +1061,27 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94217, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Discord Bot Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "ID:master,PW:dipPr10Gg!", + "line": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", "line_num": 1, - "path": "tests/samples/doc_id_pair_passwd_pair", + "path": "tests/samples/discord_bot_token", "info": "", - "value": "dipPr10Gg!", - "value_start": 13, - "value_end": 23, - "variable": "master,PW", + "value": "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje", + "value_start": 0, + "value_end": 72, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.989735285398626, - "valid": false + "entropy": 4.731746181697384, + "valid": true } } ] @@ -832,45 +1089,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78111, + "ml_probability": 0.775, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID:master PW:dipPr11Gg!", - "line_num": 2, + "line": "ID:master,PW:dipPr10Gg!", + "line_num": 1, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "", - "value": "dipPr11Gg!", + "value": "dipPr10Gg!", "value_start": 13, "value_end": 23, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.7897352853986264, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.81375, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ANYID:master PW:dipPr12Gg!", - "line_num": 3, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr12Gg!", - "value_start": 16, - "value_end": 26, - "variable": "PW", + "variable": "master,PW", + "variable_start": 3, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -882,7 +1116,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97553, + "ml_probability": 0.881, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -896,6 +1130,8 @@ "value_start": 25, "value_end": 35, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -907,7 +1143,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98957, + "ml_probability": 0.977, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -921,6 +1157,8 @@ "value_start": 19, "value_end": 29, "variable": "master,password", + "variable_start": 3, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -932,7 +1170,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98178, + "ml_probability": 0.786, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -946,6 +1184,8 @@ "value_start": 13, "value_end": 23, "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -957,7 +1197,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97951, + "ml_probability": 0.982, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -971,6 +1211,8 @@ "value_start": 19, "value_end": 29, "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -982,7 +1224,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98937, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -996,6 +1238,8 @@ "value_start": 21, "value_end": 31, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1007,7 +1251,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99239, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1021,6 +1265,8 @@ "value_start": 25, "value_end": 35, "variable": "master,password", + "variable_start": 9, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.989735285398626, @@ -1032,7 +1278,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96152, + "ml_probability": 0.812, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1046,6 +1292,8 @@ "value_start": 20, "value_end": 31, "variable": "pwd", + "variable_start": 16, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1057,7 +1305,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94337, + "ml_probability": 0.941, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1071,6 +1319,8 @@ "value_start": 22, "value_end": 33, "variable": "master,password", + "variable_start": 6, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.712675334928137, @@ -1082,45 +1332,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90819, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID:master PWD:dipPr112Gg!", - "line_num": 13, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr112Gg!", - "value_start": 14, - "value_end": 25, - "variable": "PWD", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.9631196533066344, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96069, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "user id:master password:dipPr113Gg!", - "line_num": 14, + "line": "user id:master password:dipPr113Gg!", + "line_num": 14, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "", "value": "dipPr113Gg!", "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1132,7 +1359,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9855, + "ml_probability": 0.975, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1146,6 +1373,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1157,7 +1386,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99273, + "ml_probability": 0.963, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1171,6 +1400,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1182,7 +1413,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97227, + "ml_probability": 0.97, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1196,6 +1427,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1207,7 +1440,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98513, + "ml_probability": 0.972, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1221,6 +1454,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1232,7 +1467,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98967, + "ml_probability": 0.965, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1246,6 +1481,8 @@ "value_start": 25, "value_end": 36, "variable": "master,password", + "variable_start": 9, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1257,7 +1494,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98433, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1271,6 +1508,8 @@ "value_start": 25, "value_end": 36, "variable": "password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1282,7 +1521,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96661, + "ml_probability": 0.926, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1296,6 +1535,8 @@ "value_start": 19, "value_end": 30, "variable": "passwd", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1307,7 +1548,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9157, + "ml_probability": 0.954, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1321,6 +1562,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1332,32 +1575,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90242, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:master pass:dipPr122Gg!", - "line_num": 23, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr122Gg!", - "value_start": 15, - "value_end": 26, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.9631196533066344, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93864, + "ml_probability": 0.735, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1371,6 +1589,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1382,7 +1602,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99393, + "ml_probability": 0.928, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1396,6 +1616,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1407,7 +1629,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98374, + "ml_probability": 0.893, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1421,6 +1643,8 @@ "value_start": 23, "value_end": 34, "variable": "master,password", + "variable_start": 7, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1432,7 +1656,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9868, + "ml_probability": 0.791, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1446,6 +1670,8 @@ "value_start": 43, "value_end": 54, "variable": "Password", + "variable_start": 34, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1457,7 +1683,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97173, + "ml_probability": 0.915, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1471,6 +1697,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pw", + "variable_start": 6, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1482,7 +1710,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98572, + "ml_probability": 0.941, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1496,6 +1724,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1507,7 +1737,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96866, + "ml_probability": 0.639, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1521,6 +1751,8 @@ "value_start": 22, "value_end": 33, "variable": "Pwd", + "variable_start": 18, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1532,7 +1764,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97155, + "ml_probability": 0.945, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1546,6 +1778,8 @@ "value_start": 22, "value_end": 33, "variable": "Password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1557,7 +1791,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9814, + "ml_probability": 0.85, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1571,6 +1805,8 @@ "value_start": 27, "value_end": 38, "variable": "Password", + "variable_start": 18, + "variable_end": 26, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1582,7 +1818,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9683, + "ml_probability": 0.893, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1596,6 +1832,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1607,7 +1845,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98092, + "ml_probability": 0.811, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1621,6 +1859,8 @@ "value_start": 23, "value_end": 34, "variable": "pw", + "variable_start": 20, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1632,7 +1872,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98723, + "ml_probability": 0.973, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1646,6 +1886,8 @@ "value_start": 26, "value_end": 37, "variable": "password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1657,7 +1899,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.995, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1671,6 +1913,8 @@ "value_start": 28, "value_end": 39, "variable": "master,ANYpassword", + "variable_start": 9, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1682,7 +1926,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99217, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1696,6 +1940,8 @@ "value_start": 31, "value_end": 42, "variable": "ANYpassword", + "variable_start": 19, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1707,7 +1953,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99366, + "ml_probability": 0.949, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1721,6 +1967,8 @@ "value_start": 14, "value_end": 25, "variable": "master,PWD", + "variable_start": 3, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1732,7 +1980,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98726, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1746,6 +1994,8 @@ "value_start": 15, "value_end": 26, "variable": "PASS", + "variable_start": 10, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1757,7 +2007,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98166, + "ml_probability": 0.99, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1771,6 +2021,8 @@ "value_start": 22, "value_end": 33, "variable": "passwd", + "variable_start": 15, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1782,7 +2034,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98929, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1796,6 +2048,8 @@ "value_start": 22, "value_end": 33, "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1807,7 +2061,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9941, + "ml_probability": 0.849, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1821,6 +2075,8 @@ "value_start": 17, "value_end": 28, "variable": "master,pass", + "variable_start": 5, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -1832,7 +2088,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99533, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1846,6 +2102,8 @@ "value_start": 9, "value_end": 20, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1857,7 +2115,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99094, + "ml_probability": 0.969, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1871,6 +2129,8 @@ "value_start": 25, "value_end": 36, "variable": "Password", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1882,7 +2142,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99616, + "ml_probability": 0.977, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1896,6 +2156,8 @@ "value_start": 15, "value_end": 26, "variable": "master,pass", + "variable_start": 3, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1907,7 +2169,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98161, + "ml_probability": 0.928, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1921,56 +2183,8 @@ "value_start": 13, "value_end": 24, "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", - "line_num": 50, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "98.76.54.32", - "value_start": 1, - "value_end": 12, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93832, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "(98.76.54.32)ID:master PW:dipPr149Gg!", - "line_num": 50, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr149Gg!", - "value_start": 26, - "value_end": 37, - "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -1982,7 +2196,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96866, + "ml_probability": 0.736, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -1996,6 +2210,8 @@ "value_start": 15, "value_end": 26, "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2007,7 +2223,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97171, + "ml_probability": 0.629, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2021,6 +2237,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2032,7 +2250,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.984, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2046,6 +2264,8 @@ "value_start": 28, "value_end": 39, "variable": "Password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2057,7 +2277,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99749, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2071,6 +2291,8 @@ "value_start": 29, "value_end": 40, "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2082,7 +2304,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99451, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2096,6 +2318,8 @@ "value_start": 24, "value_end": 35, "variable": "ANY_pass", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2107,7 +2331,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99606, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2121,6 +2345,8 @@ "value_start": 24, "value_end": 35, "variable": "password", + "variable_start": 15, + "variable_end": 23, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2132,7 +2358,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99761, + "ml_probability": 0.986, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2146,6 +2372,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pwd", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2157,7 +2385,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99759, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2171,6 +2399,8 @@ "value_start": 33, "value_end": 44, "variable": "master,ANY_password", + "variable_start": 13, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2182,7 +2412,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99134, + "ml_probability": 0.987, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2196,6 +2426,8 @@ "value_start": 32, "value_end": 43, "variable": "master,ANY_password", + "variable_start": 12, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2207,7 +2439,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97394, + "ml_probability": 0.976, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2221,6 +2453,8 @@ "value_start": 25, "value_end": 36, "variable": "ANY_PASS", + "variable_start": 16, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2232,7 +2466,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97418, + "ml_probability": 0.652, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2246,6 +2480,8 @@ "value_start": 34, "value_end": 45, "variable": "password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2257,32 +2493,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98534, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!", - "line_num": 64, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr163Gg!", - "value_start": 38, - "value_end": 49, - "variable": "PWD", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99043, + "ml_probability": 0.989, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2296,6 +2507,8 @@ "value_start": 23, "value_end": 34, "variable": "password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2307,7 +2520,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99413, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2321,6 +2534,8 @@ "value_start": 33, "value_end": 44, "variable": "ANY-password", + "variable_start": 20, + "variable_end": 32, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2332,7 +2547,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98612, + "ml_probability": 0.855, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2346,6 +2561,8 @@ "value_start": 21, "value_end": 32, "variable": "pass", + "variable_start": 16, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2357,7 +2574,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9925, + "ml_probability": 0.925, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2371,6 +2588,8 @@ "value_start": 16, "value_end": 27, "variable": "pwd", + "variable_start": 12, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2382,7 +2601,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98443, + "ml_probability": 0.921, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2396,6 +2615,8 @@ "value_start": 15, "value_end": 26, "variable": "master,PW", + "variable_start": 5, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2407,7 +2628,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98844, + "ml_probability": 0.944, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2421,6 +2642,8 @@ "value_start": 17, "value_end": 28, "variable": "pass", + "variable_start": 12, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2432,7 +2655,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99429, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2446,6 +2669,8 @@ "value_start": 21, "value_end": 32, "variable": "password", + "variable_start": 12, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2457,7 +2682,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99609, + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2471,6 +2696,8 @@ "value_start": 26, "value_end": 37, "variable": "Password", + "variable_start": 17, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2482,7 +2709,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99555, + "ml_probability": 0.993, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2496,6 +2723,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2507,7 +2736,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98078, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2521,6 +2750,8 @@ "value_start": 20, "value_end": 31, "variable": "master,PW", + "variable_start": 10, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2532,7 +2763,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99698, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2546,6 +2777,8 @@ "value_start": 19, "value_end": 30, "variable": "Password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2557,7 +2790,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99697, + "ml_probability": 0.993, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2571,6 +2804,8 @@ "value_start": 21, "value_end": 32, "variable": "master,password", + "variable_start": 5, + "variable_end": 20, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2582,7 +2817,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99288, + "ml_probability": 0.975, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2596,6 +2831,8 @@ "value_start": 23, "value_end": 34, "variable": "Password", + "variable_start": 14, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2607,7 +2844,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98647, + "ml_probability": 0.759, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2621,6 +2858,8 @@ "value_start": 18, "value_end": 29, "variable": "Pwd", + "variable_start": 14, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2632,57 +2871,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96062, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:master,default pw:dipPr182Gg!", - "line_num": 83, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr182Gg!", - "value_start": 21, - "value_end": 32, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98849, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id/pw id:master pw:dipPr185Gg!", - "line_num": 86, - "path": "tests/samples/doc_id_pair_passwd_pair", - "info": "", - "value": "dipPr185Gg!", - "value_start": 19, - "value_end": 30, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98849, + "ml_probability": 0.766, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2696,6 +2885,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2707,7 +2898,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99555, + "ml_probability": 0.971, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2721,6 +2912,8 @@ "value_start": 16, "value_end": 27, "variable": "master,pwd", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2732,7 +2925,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98872, + "ml_probability": 0.839, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2746,6 +2939,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.9631196533066344, @@ -2757,7 +2952,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9858, + "ml_probability": 0.871, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -2771,6 +2966,8 @@ "value_start": 19, "value_end": 30, "variable": "pw", + "variable_start": 16, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2782,20 +2979,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97663, + "ml_probability": 0.904, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "PW:dipPr190Gg! ID:master", - "line_num": 91, + "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", + "line_num": 95, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "", - "value": "dipPr190Gg!", - "value_start": 3, - "value_end": 14, - "variable": "PW", + "value": "dipPr194Gg!", + "value_start": 16, + "value_end": 27, + "variable": "pw", + "variable_start": 13, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.1449378351248165, @@ -2806,24 +3005,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.973, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", - "line_num": 95, + "line": "id: master pw:dipPr197Gg!", + "line_num": 98, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "", - "value": "98.76.54.32", - "value_start": 31, - "value_end": 42, - "variable": null, + "value": "dipPr197Gg!", + "value_start": 14, + "value_end": 25, + "variable": "pw", + "variable_start": 11, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.1449378351248165, "valid": false } } @@ -2832,23 +3033,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97658, + "ml_probability": 0.968, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANYid:master pw:dipPr194Gg! ip:98.76.54.32", - "line_num": 95, - "path": "tests/samples/doc_id_pair_passwd_pair", + "line": "username/password:master/iPp7@GRq", + "line_num": 8, + "path": "tests/samples/doc_id_passwd_pair", "info": "", - "value": "dipPr194Gg!", - "value_start": 16, - "value_end": 27, - "variable": "pw", + "value": "master/iPp7@GRq", + "value_start": 18, + "value_end": 33, + "variable": "password", + "variable_start": 9, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, + "entropy": 3.64643122256795, "valid": false } } @@ -2856,24 +3059,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.921, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32 mailto:{1} (password-dipPr196Gg!) # skip", - "line_num": 97, - "path": "tests/samples/doc_id_pair_passwd_pair", + "line": "id/passwd:master/iPp8@GRq", + "line_num": 9, + "path": "tests/samples/doc_id_passwd_pair", "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, + "value": "master/iPp8@GRq", + "value_start": 10, + "value_end": 25, + "variable": "passwd", + "variable_start": 3, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.64643122256795, "valid": false } } @@ -2882,23 +3087,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98485, + "ml_probability": 0.745, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id: master pw:dipPr197Gg!", - "line_num": 98, - "path": "tests/samples/doc_id_pair_passwd_pair", + "line": "98.76.54.32 id/pw:master/iPp19@GRq", + "line_num": 20, + "path": "tests/samples/doc_id_passwd_pair", "info": "", - "value": "dipPr197Gg!", - "value_start": 14, - "value_end": 25, + "value": "master/iPp19@GRq", + "value_start": 18, + "value_end": 34, "variable": "pw", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, + "entropy": 3.75, "valid": false } } @@ -2907,23 +3114,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9931, + "ml_probability": 0.874, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:master@example.com,pw:dipPr198Gg!", - "line_num": 99, - "path": "tests/samples/doc_id_pair_passwd_pair", + "line": "ID/Password=master/iPp27@GRq", + "line_num": 28, + "path": "tests/samples/doc_id_passwd_pair", "info": "", - "value": "dipPr198Gg!", - "value_start": 25, - "value_end": 36, - "variable": "master@example.com,pw", + "value": "master/iPp27@GRq", + "value_start": 12, + "value_end": 28, + "variable": "Password", + "variable_start": 3, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.1449378351248165, + "entropy": 3.75, "valid": false } } @@ -2932,23 +3141,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98537, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:master@example.com,pw:IHQSB1GG!", - "line_num": 102, - "path": "tests/samples/doc_id_pair_passwd_pair", + "line": "Password:Prl23Db#@", + "line_num": 1, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "IHQSB1GG!", - "value_start": 25, - "value_end": 34, - "variable": "master@example.com,pw", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.595488890170944, + "entropy": 2.4654972233440207, "valid": false } } @@ -2957,23 +3168,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.82012, + "ml_probability": 0.847, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PW:master/iPp0@GRq", - "line_num": 1, - "path": "tests/samples/doc_id_passwd_pair", - "info": "", - "value": "master/iPp0@GRq", - "value_start": 6, - "value_end": 21, - "variable": "PW", + "line": "pw:Prl23Db#@", + "line_num": 3, + "path": "tests/samples/doc_passwd_pair", + "info": "", + "value": "Prl23Db#@", + "value_start": 3, + "value_end": 12, + "variable": "pw", + "variable_start": 0, + "variable_end": 2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -2982,23 +3195,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.853, + "ml_probability": 0.939, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/Password:master/iPp2@GRq", - "line_num": 3, - "path": "tests/samples/doc_id_passwd_pair", + "line": "Password=Prl23Db#@", + "line_num": 4, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp2@GRq", - "value_start": 12, - "value_end": 27, + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3007,23 +3222,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.93163, + "ml_probability": 0.968, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/Pass:master/iPp3@GRq", - "line_num": 4, - "path": "tests/samples/doc_id_passwd_pair", + "line": "pwd:Prl23Db#@", + "line_num": 5, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp3@GRq", - "value_start": 8, - "value_end": 23, - "variable": "Pass", + "value": "Prl23Db#@", + "value_start": 4, + "value_end": 13, + "variable": "pwd", + "variable_start": 0, + "variable_end": 3, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3032,23 +3249,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94939, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PW=master/iPp5@GRq", - "line_num": 6, - "path": "tests/samples/doc_id_passwd_pair", + "line": "ANY_password=Prl23Db#@", + "line_num": 8, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp5@GRq", - "value_start": 6, - "value_end": 21, - "variable": "PW", + "value": "Prl23Db#@", + "value_start": 13, + "value_end": 22, + "variable": "ANY_password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3057,23 +3276,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96971, + "ml_probability": 0.967, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "username/password:master/iPp7@GRq", - "line_num": 8, - "path": "tests/samples/doc_id_passwd_pair", + "line": "pass:Prl23Db#@", + "line_num": 10, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp7@GRq", - "value_start": 18, - "value_end": 33, - "variable": "password", + "value": "Prl23Db#@", + "value_start": 5, + "value_end": 14, + "variable": "pass", + "variable_start": 0, + "variable_end": 4, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3082,23 +3303,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9804, + "ml_probability": 0.984, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id/passwd:master/iPp8@GRq", - "line_num": 9, - "path": "tests/samples/doc_id_passwd_pair", + "line": "ANY-password=Prl23Db#@", + "line_num": 11, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp8@GRq", - "value_start": 10, - "value_end": 25, - "variable": "passwd", + "value": "Prl23Db#@", + "value_start": 13, + "value_end": 22, + "variable": "ANY-password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.64643122256795, + "entropy": 2.4654972233440207, "valid": false } } @@ -3106,24 +3329,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.952, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(ID:master/PW:iPp10@GRq) # todo: move into other sample ?", - "line_num": 11, - "path": "tests/samples/doc_id_passwd_pair", + "line": "master@98.76.54.32 password:Prl23Db#@", + "line_num": 14, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "Prl23Db#@", + "value_start": 28, + "value_end": 37, + "variable": "password", + "variable_start": 19, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.4654972233440207, "valid": false } } @@ -3132,23 +3357,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.81258, + "ml_probability": 0.931, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\uc544\uc774\ub514/PW:master/iPp16@GRq", + "line": "ANY_PW:Prl23Db#@", "line_num": 17, - "path": "tests/samples/doc_id_passwd_pair", + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp16@GRq", + "value": "Prl23Db#@", "value_start": 7, - "value_end": 23, - "variable": "PW", + "value_end": 16, + "variable": "ANY_PW", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3157,23 +3384,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.90956, + "ml_probability": 0.951, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\uacc4\uc815/PW:master/iPp17@GRq", + "line": "default password:Prl23Db#@", "line_num": 18, - "path": "tests/samples/doc_id_passwd_pair", + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp17@GRq", - "value_start": 6, - "value_end": 22, - "variable": "PW", + "value": "Prl23Db#@", + "value_start": 17, + "value_end": 26, + "variable": "password", + "variable_start": 8, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3181,24 +3410,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.982, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 id/pw:master/iPp19@GRq", - "line_num": 20, - "path": "tests/samples/doc_id_passwd_pair", + "line": "\"password\":\"Prl23Db#@\"", + "line_num": 21, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "Prl23Db#@", + "value_start": 12, + "value_end": 21, + "variable": "password", + "variable_start": 1, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.4654972233440207, "valid": false } } @@ -3207,23 +3438,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86488, + "ml_probability": 0.883, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 id/pw:master/iPp19@GRq", - "line_num": 20, - "path": "tests/samples/doc_id_passwd_pair", + "line": "Passwd:Prl23Db#@ Prl23Db#@", + "line_num": 23, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp19@GRq", - "value_start": 18, - "value_end": 34, - "variable": "pw", + "value": "Prl23Db#@", + "value_start": 7, + "value_end": 16, + "variable": "Passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3232,23 +3465,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.88303, + "ml_probability": 0.946, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id/pass:master,iPp20@GRq", - "line_num": 21, - "path": "tests/samples/doc_id_passwd_pair", + "line": "PW:Prl23Db#@,password:Prl23Db#@", + "line_num": 24, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master,iPp20@GRq", - "value_start": 8, - "value_end": 24, - "variable": "pass", + "value": "Prl23Db#@", + "value_start": 22, + "value_end": 31, + "variable": "password", + "variable_start": 13, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.5, + "entropy": 2.4654972233440207, "valid": false } } @@ -3257,23 +3492,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.83284, + "ml_probability": 0.926, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PWD:master/iPp21@GRq", - "line_num": 22, - "path": "tests/samples/doc_id_passwd_pair", + "line": "password:Prl23Db#@,\ube44\ubc88:Prl23Db#@", + "line_num": 25, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp21@GRq", - "value_start": 7, - "value_end": 23, - "variable": "PWD", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3282,23 +3519,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.83065, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "user/pwd:master/iPp22@GRq", - "line_num": 23, - "path": "tests/samples/doc_id_passwd_pair", + "line": "passwd=Prl23Db#@", + "line_num": 26, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp22@GRq", - "value_start": 9, - "value_end": 25, - "variable": "pwd", + "value": "Prl23Db#@", + "value_start": 7, + "value_end": 16, + "variable": "passwd", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.625, + "entropy": 2.4654972233440207, "valid": false } } @@ -3307,23 +3546,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98612, + "ml_probability": 0.939, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "user/pass:master/iPp25@GRq", - "line_num": 26, - "path": "tests/samples/doc_id_passwd_pair", + "line": "password:Prl23Db#@, paasword:Prl23Db#@", + "line_num": 30, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp25@GRq", - "value_start": 10, - "value_end": 26, - "variable": "pass", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3332,23 +3573,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97221, + "ml_probability": 0.967, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/Password=master/iPp27@GRq", - "line_num": 28, - "path": "tests/samples/doc_id_passwd_pair", + "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", + "line_num": 31, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp27@GRq", - "value_start": 12, - "value_end": 28, - "variable": "Password", + "value": "Prl23Db#@", + "value_start": 9, + "value_end": 18, + "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3357,23 +3600,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.94576, + "ml_probability": 0.959, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID/PW:master/iPp28@GRq", - "line_num": 29, - "path": "tests/samples/doc_id_passwd_pair", + "line": "password:Prl23Db#@,ANYPassword:Prl23Db#@", + "line_num": 31, + "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "master/iPp28@GRq", - "value_start": 6, - "value_end": 22, - "variable": "PW", + "value": "Prl23Db#@", + "value_start": 31, + "value_end": 40, + "variable": "ANYPassword", + "variable_start": 19, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 2.4654972233440207, "valid": false } } @@ -3382,20 +3627,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.886, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Password:Prl23Db#@", - "line_num": 1, + "line": "Password:Prl23Db#@,pwd=Prl23Db#@", + "line_num": 32, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", "value_start": 9, "value_end": 18, "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3407,20 +3654,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6758, + "ml_probability": 0.67, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "pw:Prl23Db#@", - "line_num": 3, + "line": "Password:Prl23Db#@,pwd=Prl23Db#@", + "line_num": 32, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 3, - "value_end": 12, - "variable": "pw", + "value_start": 23, + "value_end": 32, + "variable": "pwd", + "variable_start": 19, + "variable_end": 22, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3432,20 +3681,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.985, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Password=Prl23Db#@", - "line_num": 4, + "line": "ANY_password:Prl23Db#@", + "line_num": 34, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 9, - "value_end": 18, - "variable": "Password", + "value_start": 13, + "value_end": 22, + "variable": "ANY_password", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3457,20 +3708,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.951, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "pwd:Prl23Db#@", - "line_num": 5, + "line": "--password=Prl23Db#@", + "line_num": 37, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 4, - "value_end": 13, - "variable": "pwd", + "value_start": 11, + "value_end": 20, + "variable": "password", + "variable_start": 2, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3482,20 +3735,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.822, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_password=Prl23Db#@", - "line_num": 8, + "line": "root/Prl23Db#@,root password:Prl23Db#@", + "line_num": 38, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 13, - "value_end": 22, - "variable": "ANY_password", + "value_start": 29, + "value_end": 38, + "variable": "password", + "variable_start": 20, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3507,20 +3762,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.767, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "pass:Prl23Db#@", - "line_num": 10, + "line": "Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@", + "line_num": 40, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 5, - "value_end": 14, - "variable": "pass", + "value_start": 48, + "value_end": 57, + "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3532,20 +3789,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, + "ml_probability": 0.916, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY-password=Prl23Db#@", - "line_num": 11, + "line": "Prl23Db#@:password:Prl23Db#@", + "line_num": 41, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 13, - "value_end": 22, - "variable": "ANY-password", + "value_start": 19, + "value_end": 28, + "variable": "password", + "variable_start": 10, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3556,24 +3815,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.992, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32 password:Prl23Db#@", - "line_num": 14, + "line": "ANYpassword=Prl23Db#@", + "line_num": 45, "path": "tests/samples/doc_passwd_pair", "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, + "value": "Prl23Db#@", + "value_start": 12, + "value_end": 21, + "variable": "ANYpassword", + "variable_start": 0, + "variable_end": 11, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.4654972233440207, "valid": false } } @@ -3582,20 +3843,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.75257, + "ml_probability": 0.992, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32 password:Prl23Db#@", - "line_num": 14, + "line": "passwords:Prl23Db#@", + "line_num": 46, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 28, - "value_end": 37, - "variable": "password", + "value_start": 10, + "value_end": 19, + "variable": "passwords", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3607,20 +3870,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6758, + "ml_probability": 0.991, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_PW:Prl23Db#@", - "line_num": 17, + "line": "password=>Prl23Db#@", + "line_num": 48, "path": "tests/samples/doc_passwd_pair", "info": "", "value": "Prl23Db#@", - "value_start": 7, - "value_end": 16, - "variable": "ANY_PW", + "value_start": 10, + "value_end": 19, + "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4654972233440207, @@ -3632,23 +3897,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "default password:Prl23Db#@", - "line_num": 18, - "path": "tests/samples/doc_passwd_pair", + "line": "ANY-Token:AIhq5Xyb1Gga9Q0", + "line_num": 1, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 17, - "value_end": 26, - "variable": "password", + "value": "AIhq5Xyb1Gga9Q0", + "value_start": 10, + "value_end": 25, + "variable": "ANY-Token", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.906890595608518, "valid": false } } @@ -3657,23 +3924,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 0.999, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\"password\":\"Prl23Db#@\"", - "line_num": 21, - "path": "tests/samples/doc_passwd_pair", + "line": "token:AIhq5Xyb1Gga9Q2", + "line_num": 3, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 12, + "value": "AIhq5Xyb1Gga9Q2", + "value_start": 6, "value_end": 21, - "variable": "password", + "variable": "token", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.906890595608518, "valid": false } } @@ -3682,23 +3951,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Key", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Passwd:Prl23Db#@ Prl23Db#@", - "line_num": 23, - "path": "tests/samples/doc_passwd_pair", + "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", + "line_num": 4, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 7, - "value_end": 16, - "variable": "Passwd", + "value": "AIhq5Xyb1Gga9Q3", + "value_start": 11, + "value_end": 26, + "variable": "KEY", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.906890595608518, "valid": false } } @@ -3707,23 +3978,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "passwd=Prl23Db#@", - "line_num": 26, - "path": "tests/samples/doc_passwd_pair", + "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", + "line_num": 4, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 7, - "value_end": 16, - "variable": "passwd", + "value": "AIhq5Xyb1Gga9Q3", + "value_start": 11, + "value_end": 26, + "variable": "SECRET KEY", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.906890595608518, "valid": false } } @@ -3732,23 +4005,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_password:Prl23Db#@", - "line_num": 34, - "path": "tests/samples/doc_passwd_pair", + "line": "secret=AIhq5Xyb1Gga9Q4", + "line_num": 5, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 13, + "value": "AIhq5Xyb1Gga9Q4", + "value_start": 7, "value_end": 22, - "variable": "ANY_password", + "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.906890595608518, "valid": false } } @@ -3757,23 +4032,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "--password=Prl23Db#@", - "line_num": 37, - "path": "tests/samples/doc_passwd_pair", + "line": "secret:AIhq5Xyb1Gga9Q6", + "line_num": 7, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 11, - "value_end": 20, - "variable": "password", + "value": "AIhq5Xyb1Gga9Q6", + "value_start": 7, + "value_end": 22, + "variable": "secret", + "variable_start": 0, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.906890595608518, "valid": false } } @@ -3782,23 +4059,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "root/Prl23Db#@,root password:Prl23Db#@", - "line_num": 38, - "path": "tests/samples/doc_passwd_pair", + "line": "ANY_token=AIhq5Xyb1Gga9Q7", + "line_num": 8, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 29, - "value_end": 38, - "variable": "password", + "value": "AIhq5Xyb1Gga9Q7", + "value_start": 10, + "value_end": 25, + "variable": "ANY_token", + "variable_start": 0, + "variable_end": 9, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.906890595608518, "valid": false } } @@ -3807,23 +4086,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7933, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@", - "line_num": 40, - "path": "tests/samples/doc_passwd_pair", + "line": "ANY.secret=AIhq5Xyb1Gga9Q19", + "line_num": 20, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 48, - "value_end": 57, - "variable": "password", + "value": "AIhq5Xyb1Gga9Q19", + "value_start": 11, + "value_end": 27, + "variable": "ANY.secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.75, "valid": false } } @@ -3832,23 +4113,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Prl23Db#@:password:Prl23Db#@", - "line_num": 41, - "path": "tests/samples/doc_passwd_pair", + "line": "--secret=AIhq5Xyb1Gga9Q21", + "line_num": 22, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 19, - "value_end": 28, - "variable": "password", + "value": "AIhq5Xyb1Gga9Q21", + "value_start": 9, + "value_end": 25, + "variable": "secret", + "variable_start": 2, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.875, "valid": false } } @@ -3857,23 +4140,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 1.0, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANYpassword=Prl23Db#@", - "line_num": 45, - "path": "tests/samples/doc_passwd_pair", + "line": "ANY_secret:AIhq5Xyb1Gga9Q22", + "line_num": 23, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 12, - "value_end": 21, - "variable": "ANYpassword", + "value": "AIhq5Xyb1Gga9Q22", + "value_start": 11, + "value_end": 27, + "variable": "ANY_secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 3.875, "valid": false } } @@ -3882,23 +4167,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 0.998, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "passwords:Prl23Db#@", - "line_num": 46, - "path": "tests/samples/doc_passwd_pair", + "line": "-Token:AIhq5Xyb1Gga9Q23", + "line_num": 24, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 10, - "value_end": 19, - "variable": "passwords", + "value": "AIhq5Xyb1Gga9Q23", + "value_start": 7, + "value_end": 23, + "variable": "Token", + "variable_start": 1, + "variable_end": 6, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 4.0, "valid": false } } @@ -3907,23 +4194,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.86693, - "rule": "Password", + "ml_probability": 1.0, + "rule": "API", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "password=>Prl23Db#@", - "line_num": 48, - "path": "tests/samples/doc_passwd_pair", + "line": "API Secret:AIhq5Xyb1Gga9Q24", + "line_num": 25, + "path": "tests/samples/doc_secret_pair", "info": "", - "value": "Prl23Db#@", - "value_start": 10, - "value_end": 19, - "variable": "password", + "value": "AIhq5Xyb1Gga9Q24", + "value_start": 11, + "value_end": 27, + "variable": "API Secret", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.4654972233440207, + "entropy": 4.0, "valid": false } } @@ -3932,23 +4221,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99405, - "rule": "Token", + "ml_probability": 1.0, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY-Token:AIhq5Xyb1Gga9Q0", - "line_num": 1, + "line": "API Secret:AIhq5Xyb1Gga9Q24", + "line_num": 25, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q0", - "value_start": 10, - "value_end": 25, - "variable": "ANY-Token", + "value": "AIhq5Xyb1Gga9Q24", + "value_start": 11, + "value_end": 27, + "variable": "Secret", + "variable_start": 4, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 4.0, "valid": false } } @@ -3957,23 +4248,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99422, - "rule": "Token", + "ml_probability": 0.998, + "rule": "Key", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "token:AIhq5Xyb1Gga9Q2", - "line_num": 3, + "line": "access key:AIhq5Xyb1Gga9Q26", + "line_num": 27, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q2", - "value_start": 6, - "value_end": 21, - "variable": "token", + "value": "AIhq5Xyb1Gga9Q26", + "value_start": 11, + "value_end": 27, + "variable": "key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 4.0, "valid": false } } @@ -3982,23 +4275,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99416, + "ml_probability": 1.0, "rule": "Key", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", - "line_num": 4, + "line": "Secret Key:AIhq5Xyb1Gga9Q27", + "line_num": 28, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q3", + "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, - "value_end": 26, - "variable": "KEY", + "value_end": 27, + "variable": "Key", + "variable_start": 7, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 4.0, "valid": false } } @@ -4007,23 +4302,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99416, + "ml_probability": 1.0, "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "SECRET KEY:AIhq5Xyb1Gga9Q3", - "line_num": 4, + "line": "Secret Key:AIhq5Xyb1Gga9Q27", + "line_num": 28, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q3", + "value": "AIhq5Xyb1Gga9Q27", "value_start": 11, - "value_end": 26, - "variable": "SECRET KEY", + "value_end": 27, + "variable": "Secret Key", + "variable_start": 0, + "variable_end": 10, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 4.0, "valid": false } } @@ -4032,23 +4329,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99893, - "rule": "Secret", + "ml_probability": 0.994, + "rule": "Key", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret=AIhq5Xyb1Gga9Q4", - "line_num": 5, + "line": "ANY_key=AIhq5Xyb1Gga9Q29", + "line_num": 30, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q4", - "value_start": 7, - "value_end": 22, - "variable": "secret", + "value": "AIhq5Xyb1Gga9Q29", + "value_start": 8, + "value_end": 24, + "variable": "ANY_key", + "variable_start": 0, + "variable_end": 7, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 3.875, "valid": false } } @@ -4057,23 +4356,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99885, - "rule": "Secret", + "ml_probability": 0.999, + "rule": "Key", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret:AIhq5Xyb1Gga9Q6", - "line_num": 7, + "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", + "line_num": 31, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q6", - "value_start": 7, - "value_end": 22, - "variable": "secret", + "value": "AIhq5Xyb1Gga9Q30", + "value_start": 14, + "value_end": 30, + "variable": "secret-ANYkey", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 4.0, "valid": false } } @@ -4082,23 +4383,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99349, - "rule": "Token", + "ml_probability": 0.999, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_token=AIhq5Xyb1Gga9Q7", - "line_num": 8, + "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", + "line_num": 31, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q7", - "value_start": 10, - "value_end": 25, - "variable": "ANY_token", + "value": "AIhq5Xyb1Gga9Q30", + "value_start": 14, + "value_end": 30, + "variable": "secret-ANYkey", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "entropy": 4.0, "valid": false } } @@ -4107,23 +4410,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99863, - "rule": "Secret", + "ml_probability": 1.0, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY.secret=AIhq5Xyb1Gga9Q19", - "line_num": 20, + "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", + "line_num": 32, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q19", - "value_start": 11, - "value_end": 27, - "variable": "ANY.secret", + "value": "AIhq5Xyb1Gga9Q31", + "value_start": 34, + "value_end": 50, + "variable": "ANY_token", + "variable_start": 24, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.75, + "entropy": 3.875, "valid": false } } @@ -4132,20 +4437,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99902, - "rule": "Secret", + "ml_probability": 1.0, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "--secret=AIhq5Xyb1Gga9Q21", - "line_num": 22, + "line": "access_token:AIhq5Xyb1Gga9Q33", + "line_num": 34, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q21", - "value_start": 9, - "value_end": 25, - "variable": "secret", + "value": "AIhq5Xyb1Gga9Q33", + "value_start": 13, + "value_end": 29, + "variable": "access_token", + "variable_start": 0, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4157,20 +4464,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99908, - "rule": "Secret", + "ml_probability": 0.995, + "rule": "Auth", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_secret:AIhq5Xyb1Gga9Q22", - "line_num": 23, + "line": "Authentication key:AIhq5Xyb1Gga9Q35", + "line_num": 36, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q22", - "value_start": 11, - "value_end": 27, - "variable": "ANY_secret", + "value": "AIhq5Xyb1Gga9Q35", + "value_start": 19, + "value_end": 35, + "variable": "Authentication key", + "variable_start": 0, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.875, @@ -4182,23 +4491,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99572, - "rule": "Token", + "ml_probability": 0.995, + "rule": "Key", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "-Token:AIhq5Xyb1Gga9Q23", - "line_num": 24, + "line": "Authentication key:AIhq5Xyb1Gga9Q35", + "line_num": 36, "path": "tests/samples/doc_secret_pair", "info": "", - "value": "AIhq5Xyb1Gga9Q23", - "value_start": 7, - "value_end": 23, - "variable": "Token", + "value": "AIhq5Xyb1Gga9Q35", + "value_start": 19, + "value_end": 35, + "variable": "key", + "variable_start": 15, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 3.875, "valid": false } } @@ -4207,23 +4518,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99809, - "rule": "API", + "ml_probability": 0.956, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "API Secret:AIhq5Xyb1Gga9Q24", - "line_num": 25, - "path": "tests/samples/doc_secret_pair", + "line": "master@98.76.54.32(pw:IhqSb1Gg)", + "line_num": 3, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q24", - "value_start": 11, - "value_end": 27, - "variable": "API Secret", + "value": "IhqSb1Gg)", + "value_start": 22, + "value_end": 31, + "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -4232,23 +4545,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99809, - "rule": "Secret", + "ml_probability": 0.896, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "API Secret:AIhq5Xyb1Gga9Q24", - "line_num": 25, - "path": "tests/samples/doc_secret_pair", + "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", + "line_num": 4, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q24", - "value_start": 11, - "value_end": 27, - "variable": "Secret", + "value": "IhqSb1Gg", + "value_start": 42, + "value_end": 50, + "variable": "PW", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 3.0, "valid": false } } @@ -4257,23 +4572,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96195, - "rule": "Key", + "ml_probability": 0.943, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "access key:AIhq5Xyb1Gga9Q26", - "line_num": 27, - "path": "tests/samples/doc_secret_pair", + "line": "Password:master/IhqSb1Gg", + "line_num": 5, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q26", - "value_start": 11, - "value_end": 27, - "variable": "key", + "value": "master/IhqSb1Gg", + "value_start": 9, + "value_end": 24, + "variable": "Password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 3.906890595608518, "valid": false } } @@ -4282,23 +4599,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99482, - "rule": "Key", + "ml_probability": 0.972, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Secret Key:AIhq5Xyb1Gga9Q27", - "line_num": 28, - "path": "tests/samples/doc_secret_pair", + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", + "line_num": 6, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q27", - "value_start": 11, - "value_end": 27, - "variable": "Key", + "value": "IhqSb1Gg)", + "value_start": 44, + "value_end": 53, + "variable": "PW", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -4307,23 +4626,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99482, - "rule": "Secret", + "ml_probability": 1.0, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Secret Key:AIhq5Xyb1Gga9Q27", - "line_num": 28, - "path": "tests/samples/doc_secret_pair", + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", + "line_num": 7, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q27", - "value_start": 11, - "value_end": 27, - "variable": "Secret Key", + "value": "IhqSb1Gg", + "value_start": 49, + "value_end": 57, + "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 3.0, "valid": false } } @@ -4332,23 +4653,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.97555, - "rule": "Key", + "ml_probability": 1.0, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_key=AIhq5Xyb1Gga9Q29", - "line_num": 30, - "path": "tests/samples/doc_secret_pair", + "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", + "line_num": 11, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q29", - "value_start": 8, - "value_end": 24, - "variable": "ANY_key", + "value": "IhqSb1Gg)", + "value_start": 62, + "value_end": 71, + "variable": "password", + "variable_start": 53, + "variable_end": 61, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.875, + "entropy": 2.8177111123931664, "valid": false } } @@ -4357,23 +4680,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9969, - "rule": "Key", + "ml_probability": 0.996, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", - "line_num": 31, - "path": "tests/samples/doc_secret_pair", + "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", + "line_num": 15, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q30", - "value_start": 14, - "value_end": 30, - "variable": "secret-ANYkey", + "value": "IhqSb1Gg", + "value_start": 29, + "value_end": 37, + "variable": "pwd", + "variable_start": 25, + "variable_end": 28, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 3.0, "valid": false } } @@ -4382,23 +4707,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9969, - "rule": "Secret", + "ml_probability": 0.933, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret-ANYkey:AIhq5Xyb1Gga9Q30", - "line_num": 31, - "path": "tests/samples/doc_secret_pair", + "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", + "line_num": 16, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q30", - "value_start": 14, - "value_end": 30, - "variable": "secret-ANYkey", + "value": "IhqSb1Gg)", + "value_start": 13, + "value_end": 22, + "variable": "PW", + "variable_start": 10, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -4407,23 +4734,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99157, - "rule": "Token", + "ml_probability": 0.979, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31", - "line_num": 32, - "path": "tests/samples/doc_secret_pair", + "line": "98.76.54.32(pw:IhqSb1Gg)", + "line_num": 17, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q31", - "value_start": 34, - "value_end": 50, - "variable": "ANY_token", + "value": "IhqSb1Gg)", + "value_start": 15, + "value_end": 24, + "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.875, + "entropy": 2.8177111123931664, "valid": false } } @@ -4432,23 +4761,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99506, - "rule": "Token", + "ml_probability": 0.988, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "access_token:AIhq5Xyb1Gga9Q33", - "line_num": 34, - "path": "tests/samples/doc_secret_pair", + "line": "98.76.54.32/pw:IhqSb1Gg", + "line_num": 19, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q33", - "value_start": 13, - "value_end": 29, - "variable": "access_token", + "value": "IhqSb1Gg", + "value_start": 15, + "value_end": 23, + "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.875, + "entropy": 3.0, "valid": false } } @@ -4457,23 +4788,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.95206, - "rule": "Auth", + "ml_probability": 0.972, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Authentication key:AIhq5Xyb1Gga9Q35", - "line_num": 36, - "path": "tests/samples/doc_secret_pair", + "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", + "line_num": 20, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q35", - "value_start": 19, - "value_end": 35, - "variable": "Authentication key", + "value": "IhqSb1Gg", + "value_start": 42, + "value_end": 50, + "variable": "pw", + "variable_start": 39, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.875, + "entropy": 3.0, "valid": false } } @@ -4482,23 +4815,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.95206, - "rule": "Key", + "ml_probability": 0.966, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Authentication key:AIhq5Xyb1Gga9Q35", - "line_num": 36, - "path": "tests/samples/doc_secret_pair", + "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", + "line_num": 21, + "path": "tests/samples/doc_various", "info": "", - "value": "AIhq5Xyb1Gga9Q35", - "value_start": 19, - "value_end": 35, - "variable": "key", + "value": "IhqSb1Gg", + "value_start": 47, + "value_end": 55, + "variable": "PWD", + "variable_start": 43, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.875, + "entropy": 3.0, "valid": false } } @@ -4506,24 +4841,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.982, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 (master/IhqSb1Gg)", - "line_num": 1, + "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", + "line_num": 22, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 45, + "value_end": 54, + "variable": "pw", + "variable_start": 42, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -4531,24 +4868,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.899, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(master/IhqSb1Gg)", - "line_num": 2, + "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", + "line_num": 23, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 40, + "value_end": 49, + "variable": "pw", + "variable_start": 37, + "variable_end": 39, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -4556,24 +4895,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.981, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 3, + "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", + "line_num": 24, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 45, + "value_end": 53, + "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -4582,20 +4923,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.85092, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 3, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", + "line_num": 25, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg)", - "value_start": 22, - "value_end": 31, - "variable": "pw", + "value_start": 50, + "value_end": 59, + "variable": "password", + "variable_start": 41, + "variable_end": 49, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -4607,20 +4950,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg", - "line_num": 4, + "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", + "line_num": 28, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 42, - "value_end": 50, - "variable": "PW", + "value_start": 48, + "value_end": 56, + "variable": "password", + "variable_start": 39, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -4632,23 +4977,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7574, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Password:master/IhqSb1Gg", - "line_num": 5, + "line": "ANY_password,default:IhqSb1Gg", + "line_num": 31, "path": "tests/samples/doc_various", "info": "", - "value": "master/IhqSb1Gg", - "value_start": 9, - "value_end": 24, - "variable": "Password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, + "value": "IhqSb1Gg", + "value_start": 21, + "value_end": 29, + "variable": "ANY_password,default", + "variable_start": 0, + "variable_end": 20, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.0, "valid": false } } @@ -4656,24 +5003,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.894, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", - "line_num": 6, + "line": "Key(ANYSecret):IhqSb1Gg", + "line_num": 32, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 15, + "value_end": 23, + "variable": "Key(ANYSecret)", + "variable_start": 0, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -4682,23 +5031,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, - "rule": "Password", + "ml_probability": 0.894, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)", - "line_num": 6, + "line": "Key(ANYSecret):IhqSb1Gg", + "line_num": 32, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg)", - "value_start": 44, - "value_end": 53, - "variable": "PW", + "value": "IhqSb1Gg", + "value_start": 15, + "value_end": 23, + "variable": "ANYSecret)", + "variable_start": 4, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 3.0, "valid": false } } @@ -4706,24 +5057,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.997, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", - "line_num": 7, + "line": "98.76.54.32 ANY_PW:IhqSb1Gg", + "line_num": 34, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 19, + "value_end": 27, + "variable": "ANY_PW", + "variable_start": 12, + "variable_end": 18, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -4732,23 +5085,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.938, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg", - "line_num": 7, + "line": "98.76.54.32(ID/PW:IhqSb1Gg)", + "line_num": 36, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg", - "value_start": 49, - "value_end": 57, - "variable": "password", + "value": "IhqSb1Gg)", + "value_start": 18, + "value_end": 27, + "variable": "PW", + "variable_start": 15, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -4756,24 +5111,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.992, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 11, + "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", + "line_num": 38, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 29, - "value_end": 40, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 30, + "value_end": 39, + "variable": "pwd", + "variable_start": 26, + "variable_end": 29, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -4782,23 +5139,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 11, + "line": "password for master:IhqSb1Gg", + "line_num": 43, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg)", - "value_start": 62, - "value_end": 71, - "variable": "password", + "value": "IhqSb1Gg", + "value_start": 20, + "value_end": 28, + "variable": "password for master", + "variable_start": 0, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 3.0, "valid": false } } @@ -4806,24 +5165,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.984, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 xxxx (master/IhqSb1Gg)", - "line_num": 14, + "line": "id:xxxx(ANYpw:IhqSb1Ga)", + "line_num": 46, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Ga)", + "value_start": 14, + "value_end": 23, + "variable": "ANYpw", + "variable_start": 8, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -4831,24 +5192,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.896, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", - "line_num": 15, + "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", + "line_num": 51, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 20, + "value_end": 29, + "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -4857,20 +5220,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.949, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 pwd:IhqSb1Gg", - "line_num": 15, + "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", + "line_num": 56, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 29, - "value_end": 37, - "variable": "pwd", + "value_start": 28, + "value_end": 36, + "variable": "PW", + "variable_start": 25, + "variable_end": 27, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -4882,23 +5247,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78926, + "ml_probability": 0.999, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "\uacc4\uc815:master(PW:IhqSb1Gg)", - "line_num": 16, + "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", + "line_num": 61, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg)", - "value_start": 13, - "value_end": 22, - "variable": "PW", + "value": "IhqSb1Gg", + "value_start": 22, + "value_end": 30, + "variable": "ANY_pwd", + "variable_start": 14, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 3.0, "valid": false } } @@ -4906,24 +5273,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.998, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(pw:IhqSb1Gg)", - "line_num": 17, + "line": "Acount name:xxxx Initial Password:IhqSb1Gg", + "line_num": 62, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 34, + "value_end": 42, + "variable": "Password", + "variable_start": 25, + "variable_end": 33, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -4932,20 +5301,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, + "ml_probability": 0.953, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(pw:IhqSb1Gg)", - "line_num": 17, + "line": "Access wifi:xxxx(PW:IhqSb1Gg)", + "line_num": 63, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg)", - "value_start": 15, - "value_end": 24, - "variable": "pw", + "value_start": 20, + "value_end": 29, + "variable": "PW", + "variable_start": 17, + "variable_end": 19, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -4956,24 +5327,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.998, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32/pw:IhqSb1Gg", - "line_num": 19, + "line": "-User:master -PasswordANY:IhqSb1Gg", + "line_num": 66, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 26, + "value_end": 34, + "variable": "PasswordANY", + "variable_start": 14, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -4982,23 +5355,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98813, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32/pw:IhqSb1Gg", - "line_num": 19, + "line": "password(default:IhqSb1Gg)", + "line_num": 68, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "pw", + "value": "IhqSb1Gg)", + "value_start": 17, + "value_end": 26, + "variable": "password(default", + "variable_start": 0, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -5007,23 +5382,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, + "ml_probability": 0.956, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg", - "line_num": 20, + "line": "master@98.76.54.32(pw:IhqSb1Gg)", + "line_num": 73, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg", - "value_start": 42, - "value_end": 50, + "value": "IhqSb1Gg)", + "value_start": 22, + "value_end": 31, "variable": "pw", + "variable_start": 19, + "variable_end": 21, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -5032,20 +5409,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.99, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg", - "line_num": 21, + "line": "98.76.54.32 pw:IhqSb1Gg", + "line_num": 75, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 47, - "value_end": 55, - "variable": "PWD", + "value_start": 15, + "value_end": 23, + "variable": "pw", + "variable_start": 12, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5056,24 +5435,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.976, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 22, + "line": "config:xxxx,PW:IhqSb1Gg", + "line_num": 78, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 18, - "value_end": 29, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 15, + "value_end": 23, + "variable": "xxxx,PW", + "variable_start": 7, + "variable_end": 14, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5082,23 +5463,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.988, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 22, + "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 82, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg)", - "value_start": 45, - "value_end": 54, + "value": "IhqSb1Gg", + "value_start": 43, + "value_end": 51, "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 3.0, "valid": false } } @@ -5106,24 +5489,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.952, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 23, + "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", + "line_num": 83, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 38, + "value_end": 46, + "variable": "pw", + "variable_start": 35, + "variable_end": 37, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5132,23 +5517,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78754, + "ml_probability": 0.943, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)", - "line_num": 23, + "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 84, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg)", - "value_start": 40, - "value_end": 49, + "value": "IhqSb1Gg", + "value_start": 39, + "value_end": 47, "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 3.0, "valid": false } } @@ -5157,20 +5544,49 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg", - "line_num": 24, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", + "line_num": 85, + "path": "tests/samples/doc_various", + "info": "", + "value": "IhqSb1Gg", + "value_start": 43, + "value_end": 51, + "variable": "pw", + "variable_start": 40, + "variable_end": 42, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.0, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.995, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", + "line_num": 87, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", "value_start": 45, "value_end": 53, "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5181,24 +5597,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.996, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 25, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", + "line_num": 90, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 44, + "value_end": 52, + "variable": "pw", + "variable_start": 41, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5207,20 +5625,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 25, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", + "line_num": 93, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg)", - "value_start": 50, - "value_end": 59, - "variable": "password", + "value_start": 45, + "value_end": 54, + "variable": "pwd", + "variable_start": 41, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8177111123931664, @@ -5231,24 +5651,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.997, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} master/IhqSb1Gg", - "line_num": 26, + "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", + "line_num": 94, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 46, + "value_end": 55, + "variable": "password", + "variable_start": 37, + "variable_end": 45, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 2.8177111123931664, "valid": false } } @@ -5257,20 +5679,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, + "ml_probability": 0.995, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg", - "line_num": 28, + "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", + "line_num": 96, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 48, - "value_end": 56, - "variable": "password", + "value_start": 45, + "value_end": 53, + "variable": "Password", + "variable_start": 36, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5282,23 +5706,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99714, + "ml_probability": 0.979, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "ANY_password,default:IhqSb1Gg", - "line_num": 31, + "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", + "line_num": 97, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg", - "value_start": 21, - "value_end": 29, - "variable": "ANY_password,default", + "value": "IhqSb1Gg)", + "value_start": 42, + "value_end": 51, + "variable": "pass", + "variable_start": 37, + "variable_end": 41, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.8177111123931664, "valid": false } } @@ -5307,20 +5733,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92567, - "rule": "Key", + "ml_probability": 0.994, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Key(ANYSecret):IhqSb1Gg", - "line_num": 32, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", + "line_num": 100, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "Key(ANYSecret)", + "value_start": 43, + "value_end": 51, + "variable": "pw", + "variable_start": 40, + "variable_end": 42, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5332,20 +5760,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92567, - "rule": "Secret", + "ml_probability": 0.999, + "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "Key(ANYSecret):IhqSb1Gg", - "line_num": 32, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", + "line_num": 101, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "ANYSecret)", + "value_start": 45, + "value_end": 53, + "variable": "pass", + "variable_start": 40, + "variable_end": 44, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5356,24 +5786,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 ANY_PW:IhqSb1Gg", - "line_num": 34, + "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", + "line_num": 102, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 44, + "value_end": 52, + "variable": "password", + "variable_start": 35, + "variable_end": 43, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5382,20 +5814,22 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9819, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32 ANY_PW:IhqSb1Gg", - "line_num": 34, + "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", + "line_num": 104, "path": "tests/samples/doc_various", "info": "", "value": "IhqSb1Gg", - "value_start": 19, - "value_end": 27, - "variable": "ANY_PW", + "value_start": 49, + "value_end": 57, + "variable": "password", + "variable_start": 40, + "variable_end": 48, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -5406,24 +5840,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.934, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(ID/PW:IhqSb1Gg)", - "line_num": 36, + "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", + "line_num": 105, "path": "tests/samples/doc_various", "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, + "value": "IhqSb1Gg", + "value_start": 47, + "value_end": 55, + "variable": "pw", + "variable_start": 44, + "variable_end": 46, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, + "entropy": 3.0, "valid": false } } @@ -5432,23 +5868,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, + "ml_probability": 0.97, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "98.76.54.32(ID/PW:IhqSb1Gg)", - "line_num": 36, + "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", + "line_num": 106, "path": "tests/samples/doc_various", "info": "", - "value": "IhqSb1Gg)", - "value_start": 18, - "value_end": 27, - "variable": "PW", + "value": "IhqSb1Gg", + "value_start": 39, + "value_end": 47, + "variable": "pw", + "variable_start": 36, + "variable_end": 38, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, + "entropy": 3.0, "valid": false } } @@ -5456,1899 +5894,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", - "line_num": 38, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)", - "line_num": 38, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 30, - "value_end": 39, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "password for master:IhqSb1Gg", - "line_num": 43, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 20, - "value_end": 28, - "variable": "password for master", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32(master/IhqSb1Gg)", - "line_num": 44, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78926, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:xxxx(ANYpw:IhqSb1Gg)", - "line_num": 46, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 14, - "value_end": 23, - "variable": "ANYpw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", - "line_num": 47, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99334, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32,pw:IhqSb1Gg", - "line_num": 47, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 28, - "value_end": 36, - "variable": "gildong.hong@98.76.54.32,pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(master/IhqSb1Gg,master/IhqSb1Gg)", - "line_num": 48, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(master/IhqSb1Gg master/IhqSb1Gg)", - "line_num": 49, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "xxxx:98.76.54.32(master/IhqSb1Gg)", - "line_num": 50, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 5, - "value_end": 16, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", - "line_num": 51, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7517, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "98.76.54.32:xxxx(PW:IhqSb1Gg)", - "line_num": 51, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 20, - "value_end": 29, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7574, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "\uacc4\uc815/Password-xxxx:master/IhqSb1Gg", - "line_num": 55, - "path": "tests/samples/doc_various", - "info": "", - "value": "master/IhqSb1Gg", - "value_start": 17, - "value_end": 32, - "variable": "Password-xxxx", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.906890595608518, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", - "line_num": 56, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 PW:IhqSb1Gg", - "line_num": 56, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 28, - "value_end": 36, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "http|https://98.76.54.32/xxxx(master/IhqSb1Gg)", - "line_num": 59, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ANY_user:xxxx ANY_pwd:IhqSb1Gg", - "line_num": 61, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 22, - "value_end": 30, - "variable": "ANY_pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "Acount name:xxxx Initial Password:IhqSb1Gg", - "line_num": 62, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 34, - "value_end": 42, - "variable": "Password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.70183, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "Access wifi:xxxx(PW:IhqSb1Gg)", - "line_num": 63, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 20, - "value_end": 29, - "variable": "PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99563, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "-User:master -PasswordANY:IhqSb1Gg", - "line_num": 66, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 26, - "value_end": 34, - "variable": "PasswordANY", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92685, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "password(default:IhqSb1Gg)", - "line_num": 68, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 17, - "value_end": 26, - "variable": "password(default", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32(ID/PW:master/IhqSb1Gg)", - "line_num": 70, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 73, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.85092, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "master@98.76.54.32(pw:IhqSb1Gg)", - "line_num": 73, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 22, - "value_end": 31, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "master@98.76.54.32,PW:IhqSb1Gg", - "line_num": 74, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99334, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "master@98.76.54.32,PW:IhqSb1Gg", - "line_num": 74, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 22, - "value_end": 30, - "variable": "master@98.76.54.32,PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32 pw:IhqSb1Gg", - "line_num": 75, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9819, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "98.76.54.32 pw:IhqSb1Gg", - "line_num": 75, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99082, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "config:xxxx,PW:IhqSb1Gg", - "line_num": 78, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 15, - "value_end": 23, - "variable": "xxxx,PW", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "98.76.54.32-->master/IhqSb1Gg", - "line_num": 81, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 0, - "value_end": 11, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 82, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 82, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg", - "line_num": 83, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 38, - "value_end": 46, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 84, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 84, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 39, - "value_end": 47, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", - "line_num": 85, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg", - "line_num": 85, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": ",pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (master/IhqSb1Gg)", - "line_num": 86, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", - "line_num": 87, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 18, - "value_end": 29, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99261, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg", - "line_num": 87, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 (master/IhqSb1Gg)", - "line_num": 88, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:[1} \uacc4\uc815master/IhqSb1Gg", - "line_num": 89, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", - "line_num": 90, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg", - "line_num": 90, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 44, - "value_end": 52, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (\ube44\ubc88 IhqSb1Gg)", - "line_num": 91, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} password IhqSb1Gg", - "line_num": 92, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", - "line_num": 93, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)", - "line_num": 93, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 45, - "value_end": 54, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 94, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)", - "line_num": 94, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 46, - "value_end": 55, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", - "line_num": 96, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg", - "line_num": 96, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "Password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", - "line_num": 97, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 13, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.91394, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)", - "line_num": 97, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 42, - "value_end": 51, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} (xxxx//IhqSb1Gg)", - "line_num": 99, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 100, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg", - "line_num": 100, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 43, - "value_end": 51, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", - "line_num": 101, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg", - "line_num": 101, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 45, - "value_end": 53, - "variable": "pass", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg", - "line_num": 102, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 44, - "value_end": 52, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", - "line_num": 104, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 17, - "value_end": 28, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99678, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg", - "line_num": 104, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 49, - "value_end": 57, - "variable": "password", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg", - "line_num": 105, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 47, - "value_end": 55, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98975, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg", - "line_num": 106, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg", - "value_start": 39, - "value_end": 47, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.0, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "ID/PW 98.76.54.32:xxx master/IhqSb1Gg", - "line_num": 107, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 6, - "value_end": 17, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", - "line_num": 108, - "path": "tests/samples/doc_various", - "info": "", - "value": "98.76.54.32", - "value_start": 7, - "value_end": 18, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.515950268099853, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.78636, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", - "line_num": 108, - "path": "tests/samples/doc_various", - "info": "", - "value": "IhqSb1Gg)", - "value_start": 26, - "value_end": 35, - "variable": "pw", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.8177111123931664, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox API secret (long term)", - "severity": "high", - "confidence": "weak", - "line_data_list": [ - { - "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", - "line_num": 1, - "path": "tests/samples/dropbox_api_secret_long_term", - "info": "", - "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", - "value_start": 9, - "value_end": 73, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.89361507332541, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox App secret", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", - "line_num": 1, - "path": "tests/samples/dropbox_app_secret", - "info": "", - "value": "wpv1jq9xwanbn3n", - "value_start": 24, - "value_end": 39, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.4565647621309536, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dropbox OAuth2 API Access Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", - "line_num": 1, - "path": "tests/samples/dropbox_oauth_token", - "info": "", - "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", - "value_start": 15, - "value_end": 153, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.395844179446957, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Dynatrace API Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", - "line_num": 1, - "path": "tests/samples/dynatrace_api.hs", - "info": "", - "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", - "value_start": 0, - "value_end": 96, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.808191506786782, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Facebook Access Token", - "severity": "high", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", - "line_num": 1, - "path": "tests/samples/facebook_key", - "info": "", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "value_start": 28, - "value_end": 70, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", - "line_num": 1, - "path": "tests/samples/facebook_key", - "info": "", - "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "value_start": 28, - "value_end": 70, - "variable": "GI_REO_GI_FACEBOOK_TOKEN", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.766968315481371, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Firebase Domain", - "severity": "info", - "confidence": "moderate", - "line_data_list": [ - { - "line": "test-app-domain-42.firebaseapp.com", - "line_num": 1, - "path": "tests/samples/firebase_domain", - "info": "", - "value": "test-app-domain-42.firebaseapp.com", - "value_start": 0, - "value_end": 34, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.4347510262969525, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Firebase Domain", - "severity": "info", - "confidence": "moderate", - "line_data_list": [ - { - "line": "test2.io.firebaseio.com", - "line_num": 2, - "path": "tests/samples/firebase_domain", - "info": "", - "value": "test2.io.firebaseio.com", - "value_start": 0, - "value_end": 23, - "variable": null, - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.1394163745499943, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Classic Token", - "severity": "high", - "confidence": "strong", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.978, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", - "line_num": 1, - "path": "tests/samples/github_classic_token", + "line": "http://98.76.54.32:xxx(pw:IhqSb1Gg)", + "line_num": 108, + "path": "tests/samples/doc_various", "info": "", - "value": "ghp_00000000000000000000000000000004WZ4EQ", - "value_start": 0, - "value_end": 41, - "variable": null, + "value": "IhqSb1Gg)", + "value_start": 26, + "value_end": 35, + "variable": "pw", + "variable_start": 23, + "variable_end": 25, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.4322437698226884, + "entropy": 2.8177111123931664, "valid": false } } @@ -7358,72 +5923,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Fine-granted Token", - "severity": "high", - "confidence": "strong", - "line_data_list": [ - { - "line": "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", - "line_num": 2, - "path": "tests/samples/github_fine_granted_token", - "info": "", - "value": "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", - "value_start": 0, - "value_end": 93, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.255374790203285, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99798, - "rule": "Github Old Token", + "rule": "Dropbox API secret (long term)", "severity": "high", - "confidence": "moderate", + "confidence": "weak", "line_data_list": [ { - "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", + "line": "var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'", "line_num": 1, - "path": "tests/samples/github_key.groovy", + "path": "tests/samples/dropbox_api_secret_long_term", "info": "", - "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", - "value_start": 23, - "value_end": 63, + "value": "7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ", + "value_start": 9, + "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.246439344671015, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99798, - "rule": "Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "", - "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", - "value_start": 23, - "value_end": 63, - "variable": "GITHUB_ACCESS_TOKEN", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 4.246439344671015, + "iterator": "BASE64_CHARS", + "entropy": 4.89361507332541, "valid": true } } @@ -7433,22 +5950,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Incoming Email Token", + "rule": "Dropbox App secret", "severity": "info", "confidence": "weak", "line_data_list": [ { - "line": "var email_t = '7e4v6v5j2nepcc8f5zvatgl9g';", + "line": "var app_unique_val_s = 'wpv1jq9xwanbn3n';", "line_num": 1, - "path": "tests/samples/gitlab_email_token", + "path": "tests/samples/dropbox_app_secret", "info": "", - "value": "7e4v6v5j2nepcc8f5zvatgl9g", - "value_start": 15, - "value_end": 40, + "value": "wpv1jq9xwanbn3n", + "value_start": 24, + "value_end": 39, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 4.133660689688185, + "entropy": 3.4565647621309536, "valid": true } } @@ -7458,48 +5977,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Feed Token", - "severity": "info", - "confidence": "weak", - "line_data_list": [ - { - "line": "feed_n = 'o9aEaH32LN618KhF7e_L'", - "line_num": 1, - "path": "tests/samples/gitlab_feed_token", - "info": "", - "value": "o9aEaH32LN618KhF7e_L", - "value_start": 10, - "value_end": 30, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.9058316901429944, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab PAT", + "rule": "Dropbox OAuth2 API Access Token", "severity": "high", - "confidence": "strong", + "confidence": "moderate", "line_data_list": [ { - "line": "var pat = 'glpat-a6N2pFAr2L2A6iRsA_mw';", + "line": "var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';", "line_num": 1, - "path": "tests/samples/gitlab_pat_api", + "path": "tests/samples/dropbox_oauth_token", "info": "", - "value": "glpat-a6N2pFAr2L2A6iRsA_mw", - "value_start": 11, - "value_end": 37, + "value": "sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc", + "value_start": 15, + "value_end": 153, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.7423376242715105, - "valid": false + "entropy": 5.395844179446957, + "valid": true } } ] @@ -7508,22 +6004,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Pipeline Trigger Token", + "rule": "Dynatrace API Token", "severity": "high", - "confidence": "strong", + "confidence": "moderate", "line_data_list": [ { - "line": "trigger = 'glptt-33276248c9748113e978392e5c074b7f974f8683';", + "line": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", "line_num": 1, - "path": "tests/samples/gitlab_pipeline_trigger_token", + "path": "tests/samples/dynatrace_api.hs", "info": "", - "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", - "value_start": 11, - "value_end": 57, + "value": "dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM", + "value_start": 0, + "value_end": 96, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.8494857514609038, + "iterator": "BASE64_CHARS", + "entropy": 4.808191506786782, "valid": true } } @@ -7533,22 +6031,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Gitlab Registration Runner Token", + "rule": "Facebook Access Token", "severity": "high", - "confidence": "strong", + "confidence": "moderate", "line_data_list": [ { - "line": "gitlab_runner = 'GR1348941jG6xeSsmN8DFVKoyBYu2';", + "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, - "path": "tests/samples/gitlab_registration_runner", + "path": "tests/samples/facebook_key", "info": "", - "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", - "value_start": 17, - "value_end": 46, + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + "value_start": 28, + "value_end": 115, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.582118926162056, + "entropy": 4.936120692057916, "valid": true } } @@ -7556,25 +6056,27 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Gitlab Registration Runner Token 2023", - "severity": "high", - "confidence": "strong", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, + "rule": "Token", + "severity": "medium", + "confidence": "moderate", "line_data_list": [ { - "line": "return \"glrt-2CR8_eVxiio-1QmzPZwa\"", + "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"", "line_num": 1, - "path": "tests/samples/gitlab_registration_runner_2023", + "path": "tests/samples/facebook_key", "info": "", - "value": "glrt-2CR8_eVxiio-1QmzPZwa", - "value_start": 8, - "value_end": 33, - "variable": null, + "value": "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + "value_start": 28, + "value_end": 115, + "variable": "GI_REO_GI_FACEBOOK_TOKEN", + "variable_start": 0, + "variable_end": 24, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.006593447001756, - "valid": false + "entropy": 4.936120692057916, + "valid": true } } ] @@ -7583,22 +6085,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google API Key", + "rule": "Facebook App Token", "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "AIzaGiReoG-CrackleCrackle12315618_12315", - "line_num": 1, - "path": "tests/samples/google_api_key.toml", + "line": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", + "line_num": 2, + "path": "tests/samples/facebook_key", "info": "", - "value": "AIzaGiReoG-CrackleCrackle12315618_12315", + "value": "1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M", "value_start": 0, - "value_end": 39, + "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.165196181720608, + "entropy": 3.2089099270924217, "valid": true } } @@ -7608,39 +6112,26 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google Multi", - "severity": "high", + "rule": "Firebase Domain", + "severity": "info", "confidence": "moderate", "line_data_list": [ { - "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", - "line_num": 2, - "path": "tests/samples/google_multi", + "line": "test-app-domain-42.firebaseapp.com", + "line_num": 1, + "path": "tests/samples/firebase_domain", "info": "", - "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "value": "test-app-domain-42.firebaseapp.com", "value_start": 0, - "value_end": 72, + "value_end": 34, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.531537327540733, + "iterator": "BASE36_CHARS", + "entropy": 3.4347510262969525, "valid": true } - }, - { - "line": "4L2QMyTm6Rr0o46ytGiReoG1", - "line_num": 4, - "path": "tests/samples/google_multi", - "info": "", - "value": "4L2QMyTm6Rr0o46ytGiReoG1", - "value_start": 0, - "value_end": 24, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.084962500721157, - "valid": false - } } ] }, @@ -7648,37 +6139,51 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google Multi", - "severity": "high", + "rule": "Firebase Domain", + "severity": "info", "confidence": "moderate", "line_data_list": [ { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", + "line": "test2.io.firebaseio.com", + "line_num": 2, + "path": "tests/samples/firebase_domain", "info": "", - "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", - "value_start": 6, - "value_end": 78, + "value": "test2.io.firebaseio.com", + "value_start": 0, + "value_end": 23, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.531537327540733, + "iterator": "BASE36_CHARS", + "entropy": 3.1394163745499943, "valid": true } - }, + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Github Classic Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", + "line": "ghp_00000000000000000000000000000004WZ4EQ # classic", + "line_num": 1, + "path": "tests/samples/github_classic_token", "info": "", - "value": "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", - "value_start": 90, - "value_end": 125, + "value": "ghp_00000000000000000000000000000004WZ4EQ", + "value_start": 0, + "value_end": 41, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.436181130262395, + "entropy": 1.4322437698226884, "valid": false } } @@ -7688,47 +6193,51 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Secret", + "rule": "Github Fine-granted Token", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", - "line_num": 18, - "path": "tests/samples/google_multi", + "line": "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", + "line_num": 2, + "path": "tests/samples/github_fine_granted_token", "info": "", - "value": "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", - "value_start": 90, - "value_end": 125, + "value": "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", + "value_start": 0, + "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.436181130262395, - "valid": false + "entropy": 5.255374790203285, + "valid": true } } ] }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Google OAuth Access Token", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Github Old Token", "severity": "high", "confidence": "moderate", "line_data_list": [ { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", "line_num": 1, - "path": "tests/samples/google_oauth_key", + "path": "tests/samples/github_key.groovy", "info": "", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, + "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", + "value_start": 23, + "value_end": 63, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, + "entropy": 4.246439344671015, "valid": true } } @@ -7736,24 +6245,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Auth", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Token", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line": "GITHUB_ACCESS_TOKEN = \"lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy\"", "line_num": 1, - "path": "tests/samples/google_oauth_key", + "path": "tests/samples/github_key.groovy", "info": "", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, - "variable": "google_oauth_key", + "value": "lbyxnhqjfnzhlpnvcvaxjumgvdlnktgugdofmzyy", + "value_start": 23, + "value_end": 63, + "variable": "GITHUB_ACCESS_TOKEN", + "variable_start": 0, + "variable_end": 19, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, + "entropy": 4.246439344671015, "valid": true } } @@ -7763,22 +6274,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", - "confidence": "moderate", + "rule": "Gitlab Incoming Email Token", + "severity": "info", + "confidence": "weak", "line_data_list": [ { - "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line": "var email_t = '7e4v6v5j2nepcc8f5zvatgl9g';", "line_num": 1, - "path": "tests/samples/google_oauth_key", + "path": "tests/samples/gitlab_email_token", "info": "", - "value": "ya29.gi_reo_gi_crackle_ln22", - "value_start": 20, - "value_end": 47, - "variable": "google_oauth_key", + "value": "7e4v6v5j2nepcc8f5zvatgl9g", + "value_start": 15, + "value_end": 40, + "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 3.1797273164975133, + "entropy": 4.133660689688185, "valid": true } } @@ -7788,23 +6301,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Access Policy Token", - "severity": "high", - "confidence": "strong", + "rule": "Gitlab Feed Token", + "severity": "info", + "confidence": "weak", "line_data_list": [ { - "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", + "line": "feed_n = 'o9aEaH32LN618KhF7e_L'", "line_num": 1, - "path": "tests/samples/grafana_access_policy_token", + "path": "tests/samples/gitlab_feed_token", "info": "", - "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", - "value_start": 18, - "value_end": 130, + "value": "o9aEaH32LN618KhF7e_L", + "value_start": 10, + "value_end": 30, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.097632476604024, - "valid": true + "entropy": 3.9058316901429944, + "valid": false } } ] @@ -7813,22 +6328,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Provisioned API Key", + "rule": "Gitlab PAT", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line": "var pat = 'glpat-a6N2pFAr2L2A6iRsA_mw';", "line_num": 1, - "path": "tests/samples/grafana_provisioned_api_key", + "path": "tests/samples/gitlab_pat_api", "info": "", - "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", + "value": "glpat-a6N2pFAr2L2A6iRsA_mw", "value_start": 11, - "value_end": 107, + "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.8153130511409934, + "entropy": 3.7423376242715105, "valid": false } } @@ -7838,23 +6355,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", + "rule": "Gitlab Pipeline Trigger Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line": "trigger = 'glptt-33276248c9748113e978392e5c074b7f974f8683';", "line_num": 1, - "path": "tests/samples/grafana_provisioned_api_key", + "path": "tests/samples/gitlab_pipeline_trigger_token", "info": "", - "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", + "value": "glptt-33276248c9748113e978392e5c074b7f974f8683", "value_start": 11, - "value_end": 107, + "value_end": 57, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.8153130511409934, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.8494857514609038, + "valid": true } } ] @@ -7863,22 +6382,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Heroku API Key", + "rule": "Gitlab Registration Runner Token", "severity": "high", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { - "line": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", + "line": "gitlab_runner = 'GR1348941jG6xeSsmN8DFVKoyBYu2';", "line_num": 1, - "path": "tests/samples/heroku_api.toml", + "path": "tests/samples/gitlab_registration_runner", "info": "", - "value": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", - "value_start": 0, - "value_end": 37, + "value": "GR1348941jG6xeSsmN8DFVKoyBYu2", + "value_start": 17, + "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.48037367471734, + "iterator": "BASE64_CHARS", + "entropy": 4.582118926162056, "valid": true } } @@ -7888,23 +6409,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Instagram Access Token", + "rule": "Gitlab Registration Runner Token 2023", "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", + "line": "return \"glrt-2CR8_eVxiio-1QmzPZwa\"", "line_num": 1, - "path": "tests/samples/instagram_access_token", + "path": "tests/samples/gitlab_registration_runner_2023", "info": "", - "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", - "value_start": 0, - "value_end": 162, + "value": "glrt-2CR8_eVxiio-1QmzPZwa", + "value_start": 8, + "value_end": 33, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.231644837540696, - "valid": true + "entropy": 4.006593447001756, + "valid": false } } ] @@ -7913,23 +6436,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google API Key", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "100.64.0.0/10", - "line_num": 13, - "path": "tests/samples/ipv4", + "line": "AIzaGiReoG-CrackleCrackle12315618_12315", + "line_num": 1, + "path": "tests/samples/google_api_key.toml", "info": "", - "value": "100.64.0.0", + "value": "AIzaGiReoG-CrackleCrackle12315618_12315", "value_start": 0, - "value_end": 10, + "value_end": 39, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 1.5253496664211537, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.165196181720608, + "valid": true } } ] @@ -7938,22 +6463,41 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google Multi", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "100.64.0.0\u2013100.127.255.255", - "line_num": 14, - "path": "tests/samples/ipv4", + "line": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "line_num": 2, + "path": "tests/samples/google_multi", "info": "", - "value": "100.127.255.255", - "value_start": 11, - "value_end": 26, + "value": "194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com", + "value_start": 0, + "value_end": 72, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.008519976342584, + "iterator": "BASE64_CHARS", + "entropy": 4.531537327540733, + "valid": true + } + }, + { + "line": "4L2QMyTm6Rr0o46ytGiReoG1", + "line_num": 4, + "path": "tests/samples/google_multi", + "info": "", + "value": "4L2QMyTm6Rr0o46ytGiReoG1", + "value_start": 0, + "value_end": 24, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.084962500721157, "valid": false } } @@ -7963,22 +6507,41 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google Multi", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "100.64.0.0\u2013100.127.255.255", - "line_num": 14, - "path": "tests/samples/ipv4", + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", + "info": "", + "value": "194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com", + "value_start": 6, + "value_end": 78, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.531537327540733, + "valid": true + } + }, + { + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", "info": "", - "value": "100.64.0.0", - "value_start": 0, - "value_end": 10, + "value": "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", + "value_start": 90, + "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.5253496664211537, + "entropy": 4.436181130262395, "valid": false } } @@ -7988,22 +6551,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google OAuth Secret", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.0.0.0\u2013192.0.0.255", - "line_num": 22, - "path": "tests/samples/ipv4", + "line": "\"id\":\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\"CEKPET\":\"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\",", + "line_num": 18, + "path": "tests/samples/google_multi", "info": "", - "value": "192.0.0.255", - "value_start": 10, - "value_end": 21, + "value": "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", + "value_start": 90, + "value_end": 125, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 1.9704957226453073, + "entropy": 4.436181130262395, "valid": false } } @@ -8013,23 +6578,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Google OAuth Access Token", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "192.88.99.0/24", - "line_num": 25, - "path": "tests/samples/ipv4", + "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", + "line_num": 1, + "path": "tests/samples/google_oauth_key", "info": "", - "value": "192.88.99.0", - "value_start": 0, - "value_end": 11, + "value": "ya29.gi_reo_gi_crackle_ln22", + "value_start": 20, + "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", - "entropy": 1.9018695860849921, - "valid": false + "entropy": 3.1797273164975133, + "valid": true } } ] @@ -8038,23 +6605,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Grafana Access Policy Token", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.88.99.0\u2013192.88.99.255", - "line_num": 26, - "path": "tests/samples/ipv4", + "line": "grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'", + "line_num": 1, + "path": "tests/samples/grafana_access_policy_token", "info": "", - "value": "192.88.99.0", - "value_start": 0, - "value_end": 11, + "value": "glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19", + "value_start": 18, + "value_end": 130, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 1.9018695860849921, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.097632476604024, + "valid": true } } ] @@ -8063,22 +6632,24 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv4", - "severity": "info", - "confidence": "weak", + "rule": "Grafana Provisioned API Key", + "severity": "high", + "confidence": "strong", "line_data_list": [ { - "line": "192.88.99.0\u2013192.88.99.255", - "line_num": 26, - "path": "tests/samples/ipv4", + "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", + "line_num": 1, + "path": "tests/samples/grafana_provisioned_api_key", "info": "", - "value": "192.88.99.255", - "value_start": 12, - "value_end": 25, + "value": "eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=", + "value_start": 11, + "value_end": 107, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.019193052249804, + "entropy": 3.8153130511409934, "valid": false } } @@ -8088,23 +6659,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Grafana Service Account Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2004:5678::9324", - "line_num": 12, - "path": "tests/samples/ipv6", + "line": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", + "line_num": 1, + "path": "tests/samples/grafana_service_accounts", "info": "", - "value": "2004:5678::9324", + "value": "glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7", "value_start": 0, - "value_end": 15, + "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.725512476486815, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 4.52211252299684, + "valid": true } } ] @@ -8113,23 +6686,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Hashicorp Terraform Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2004::5678:9", - "line_num": 13, - "path": "tests/samples/ipv6", + "line": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", + "line_num": 1, + "path": "tests/samples/hashicorp_terraform", "info": "", - "value": "2004::5678:9", + "value": "Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0", "value_start": 0, - "value_end": 12, + "value_end": 90, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 2.5220552088742005, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.348551883097512, + "valid": true } } ] @@ -8138,23 +6713,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", - "confidence": "strong", + "rule": "Heroku API Key", + "severity": "high", + "confidence": "moderate", "line_data_list": [ { - "line": "2041:0000:140F::875B:131B", - "line_num": 14, - "path": "tests/samples/ipv6", + "line": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", + "line_num": 1, + "path": "tests/samples/heroku_api.toml", "info": "", - "value": "2041:0000:140F::875B:131B", + "value": "HerOkUa04b8c1d-A147-b252-3b6a8f9c2b16", "value_start": 0, - "value_end": 25, + "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "HEX_CHARS", - "entropy": 2.6146939516467023, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.48037367471734, + "valid": true } } ] @@ -8163,23 +6740,25 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "IPv6", - "severity": "info", + "rule": "Instagram Access Token", + "severity": "high", "confidence": "strong", "line_data_list": [ { - "line": "2041:0:140F::875B:131B", - "line_num": 15, - "path": "tests/samples/ipv6", + "line": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", + "line_num": 1, + "path": "tests/samples/instagram_access_token", "info": "", - "value": "2041:0:140F::875B:131B", + "value": "IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX", "value_start": 0, - "value_end": 22, + "value_end": 162, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { - "iterator": "HEX_CHARS", - "entropy": 2.684338637030481, - "valid": false + "iterator": "BASE64_CHARS", + "entropy": 5.231644837540696, + "valid": true } } ] @@ -8187,7 +6766,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8201,6 +6780,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8073549220576046, @@ -8226,6 +6807,8 @@ "value_start": 0, "value_end": 64, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.288909765557392, @@ -8251,6 +6834,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.353940312186129, @@ -8276,6 +6861,8 @@ "value_start": 0, "value_end": 16, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.625, @@ -8301,6 +6888,8 @@ "value_start": 8, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.606936732175321, @@ -8311,24 +6900,26 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99105, + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, "rule": "JSON Web Token", "severity": "medium", - "confidence": "moderate", + "confidence": "strong", "line_data_list": [ { - "line": "$payload = 'eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlEJOpS'", + "line": "detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", "line_num": 1, - "path": "tests/samples/json_web_token.hs", + "path": "tests/samples/json_web_token", "info": "", - "value": "eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlEJOpS", - "value_start": 12, - "value_end": 60, + "value": "eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA", + "value_start": 10, + "value_end": 75, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.520488802699322, + "entropy": 4.790963630103494, "valid": true } } @@ -8337,23 +6928,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99911, - "rule": "Key", + "ml_probability": 0.998, + "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "prKeyValid=LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU==", - "line_num": 1, + "line": "secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", + "line_num": 2, "path": "tests/samples/key.hs", "info": "", - "value": "LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU==", - "value_start": 11, - "value_end": 335, - "variable": "prKeyValid", + "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", + "value_start": 32, + "value_end": 72, + "variable": "secret_looks_like_linux_path_1", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.428808109703668, + "entropy": 4.8341837197791895, "valid": true } } @@ -8362,23 +6955,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99907, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret_looks_like_linux_path_1=\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\"", - "line_num": 2, + "line": "secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", + "line_num": 3, "path": "tests/samples/key.hs", "info": "", - "value": "/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF", + "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", "value_start": 32, "value_end": 72, - "variable": "secret_looks_like_linux_path_1", + "variable": "secret_looks_like_linux_path_2", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.8341837197791895, + "entropy": 4.784183719779189, "valid": true } } @@ -8387,23 +6982,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99958, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret_looks_like_linux_path_2=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\"", - "line_num": 3, + "line": "secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", + "line_num": 4, "path": "tests/samples/key.hs", "info": "", - "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF", + "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", "value_start": 32, "value_end": 72, - "variable": "secret_looks_like_linux_path_2", + "variable": "secret_looks_like_linux_path_3", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.784183719779189, + "entropy": 4.8341837197791895, "valid": true } } @@ -8412,23 +7009,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99955, + "ml_probability": 0.999, "rule": "Secret", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "secret_looks_like_linux_path_3=\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\"", - "line_num": 4, + "line": "secret_looks_like_linux_path__=\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\"", + "line_num": 5, "path": "tests/samples/key.hs", "info": "", - "value": "VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=", + "value": "VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE", "value_start": 32, "value_end": 72, - "variable": "secret_looks_like_linux_path_3", + "variable": "secret_looks_like_linux_path__", + "variable_start": 0, + "variable_end": 30, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.8341837197791895, + "entropy": 4.8530559073332755, "valid": true } } @@ -8437,7 +7036,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98676, + "ml_probability": 0.996, "rule": "Key", "severity": "medium", "confidence": "moderate", @@ -8451,6 +7050,8 @@ "value_start": 32, "value_end": 87, "variable": "key", + "variable_start": 28, + "variable_end": 31, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.962822440640043, @@ -8476,6 +7077,8 @@ "value_start": 13, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.615822531364292, @@ -8501,6 +7104,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.484377779059832, @@ -8526,6 +7131,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8551,6 +7158,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8566,6 +7175,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8577,7 +7188,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99792, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -8591,6 +7202,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8616,6 +7229,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8641,6 +7256,8 @@ "value_start": 11, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.6841837197791887, @@ -8656,6 +7273,8 @@ "value_start": 12, "value_end": 52, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8667,7 +7286,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99792, + "ml_probability": 0.998, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -8681,6 +7300,8 @@ "value_start": 12, "value_end": 52, "variable": "token", + "variable_start": 3, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.784183719779189, @@ -8692,7 +7313,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9812, + "ml_probability": 0.998, "rule": "Nonce", "severity": "medium", "confidence": "moderate", @@ -8706,6 +7327,8 @@ "value_start": 9, "value_end": 41, "variable": "nonce", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.390319531114783, @@ -8731,6 +7354,8 @@ "value_start": 5, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.561286684176785, @@ -8748,18 +7373,47 @@ "confidence": "strong", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, "path": "tests/samples/open_ai_token", "info": "", - "value": "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", + "value": "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", "value_start": 0, "value_end": 51, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.047085443409471, - "valid": false + "entropy": 5.115027050910027, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "OpenAI Token", + "severity": "high", + "confidence": "strong", + "line_data_list": [ + { + "line": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", + "line_num": 3, + "path": "tests/samples/open_ai_token", + "info": "", + "value": "sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio", + "value_start": 0, + "value_end": 56, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 5.086469255159772, + "valid": true } } ] @@ -8767,7 +7421,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98995, + "ml_probability": 0.98, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8781,6 +7435,8 @@ "value_start": 7, "value_end": 16, "variable": "my_pw", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.2432750011217983, @@ -8792,7 +7448,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99448, + "ml_probability": 0.998, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8806,6 +7462,8 @@ "value_start": 24, "value_end": 36, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2862156256610597, @@ -8817,57 +7475,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.92289, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "def connect(passwd: str = \"cq2tPr1a2\"): # python default arg", - "line_num": 4, - "path": "tests/samples/pass_valid", - "info": "", - "value": "cq2tPr1a2", - "value_start": 27, - "value_end": 36, - "variable": "passwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.9477027792200903, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.96972, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "if passworsd == \"q4c1a2oPd\": # __eq__ separator", - "line_num": 5, - "path": "tests/samples/pass_valid", - "info": "", - "value": "q4c1a2oPd", - "value_start": 17, - "value_end": 26, - "variable": "passworsd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.169925001442312, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99646, + "ml_probability": 0.904, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8881,6 +7489,8 @@ "value_start": 17, "value_end": 26, "variable": "passworsd", + "variable_start": 3, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.169925001442312, @@ -8892,7 +7502,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99933, + "ml_probability": 1.0, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8906,6 +7516,8 @@ "value_start": 9, "value_end": 23, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.521640636343319, @@ -8917,7 +7529,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99674, + "ml_probability": 0.994, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8931,6 +7543,8 @@ "value_start": 20, "value_end": 30, "variable": "gi_reo_gi_passwd", + "variable_start": 0, + "variable_end": 16, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.121928094887362, @@ -8942,7 +7556,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99674, + "ml_probability": 0.996, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8956,6 +7570,8 @@ "value_start": 58, "value_end": 68, "variable": "password_confirmation", + "variable_start": 33, + "variable_end": 54, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.121928094887362, @@ -8967,7 +7583,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.66622, + "ml_probability": 0.818, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -8981,6 +7597,8 @@ "value_start": 12, "value_end": 19, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, @@ -8992,23 +7610,52 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, + "rule": "Password", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "+ \"password\": \"dkajco1\"", + "line_num": 9, + "path": "tests/samples/password.patch", + "info": "", + "value": "dkajco1", + "value_start": 16, + "value_end": 23, + "variable": "password", + "variable_start": 4, + "variable_end": 12, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.8073549220576046, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.997, "rule": "Password", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "+ \"password\": \"dkajco1\"", - "line_num": 9, - "path": "tests/samples/password.patch", + "line": "password = \"MYPSWRD!@#$%^&*\"", + "line_num": 1, + "path": "tests/samples/password.tfvars", "info": "", - "value": "dkajco1", - "value_start": 16, - "value_end": 23, + "value": "MYPSWRD!@#$%^&*", + "value_start": 12, + "value_end": 27, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.8073549220576046, + "entropy": 1.8232156112839757, "valid": false } } @@ -9017,7 +7664,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99545, + "ml_probability": 0.978, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9031,6 +7678,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.8073549220576046, @@ -9042,7 +7691,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99077, + "ml_probability": 0.963, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -9056,6 +7705,8 @@ "value_start": 16, "value_end": 23, "variable": "password", + "variable_start": 4, + "variable_end": 12, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.4063042189065182, @@ -9081,6 +7732,8 @@ "value_start": 0, "value_end": 73, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.125814952938166, @@ -9106,6 +7759,8 @@ "value_start": 13, "value_end": 44, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.529698260800009, @@ -9121,6 +7776,8 @@ "value_start": 1, "value_end": 103, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.429600283437103, @@ -9136,6 +7793,8 @@ "value_start": 4, "value_end": 104, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.307627100346911, @@ -9151,6 +7810,8 @@ "value_start": 3, "value_end": 102, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.391947595190542, @@ -9166,6 +7827,8 @@ "value_start": 3, "value_end": 86, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.410712925114303, @@ -9181,6 +7844,8 @@ "value_start": 4, "value_end": 90, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.417032341684991, @@ -9196,6 +7861,8 @@ "value_start": 0, "value_end": 106, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.497697548960288, @@ -9211,6 +7878,8 @@ "value_start": 1, "value_end": 110, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.30959588168204, @@ -9226,6 +7895,8 @@ "value_start": 0, "value_end": 24, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.418295834054489, @@ -9241,6 +7912,8 @@ "value_start": 0, "value_end": 59, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.8721063510981755, @@ -9266,6 +7939,8 @@ "value_start": 16, "value_end": 262, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.884128060579619, @@ -9291,6 +7966,8 @@ "value_start": 0, "value_end": 47, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0185646866544076, @@ -9306,6 +7983,8 @@ "value_start": 0, "value_end": 120, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.2083460372948154, @@ -9321,6 +8000,8 @@ "value_start": 0, "value_end": 37, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.6977683083639423, @@ -9346,6 +8027,8 @@ "value_start": 0, "value_end": 40, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.48760529131298, @@ -9354,31 +8037,6 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.66622, - "rule": "Password", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "pwd = \"cackle!\"", - "line_num": 1, - "path": "tests/samples/pwd.gradle", - "info": "", - "value": "cackle!", - "value_start": 7, - "value_end": 14, - "variable": "pwd", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.120589933192232, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -9396,6 +8054,8 @@ "value_start": 0, "value_end": 179, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.493434473754405, @@ -9407,32 +8067,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99266, - "rule": "Salt", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "var Himalayan_salt = \"$hal$1te$TnnGdhednJsdQ5nfetwZ\";", - "line_num": 1, - "path": "tests/samples/salt.hs", - "info": "", - "value": "$hal$1te$TnnGdhednJsdQ5nfetwZ", - "value_start": 22, - "value_end": 51, - "variable": "Himalayan_salt", - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.613714857551378, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98571, + "ml_probability": 0.887, "rule": "Salt", "severity": "medium", "confidence": "moderate", @@ -9446,6 +8081,8 @@ "value_start": 10, "value_end": 29, "variable": "salt1", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.524274220204383, @@ -9457,23 +8094,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.721, + "ml_probability": 0.907, "rule": "Salt", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "salt2 = r\"\"\"\\0x12\\0x3s\"\"\"", - "line_num": 2, + "line": "salt3 = u\"\\u0020827634876\"", + "line_num": 3, "path": "tests/samples/salt.py", "info": "", - "value": "\\0x12\\0x3s", - "value_start": 12, - "value_end": 22, - "variable": "salt2", + "value": "\\u0020827634876", + "value_start": 10, + "value_end": 25, + "variable": "salt3", + "variable_start": 0, + "variable_end": 5, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.25754247590989, + "entropy": 2.796105389090387, "valid": false } } @@ -9482,23 +8121,25 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98487, + "ml_probability": 0.816, "rule": "Salt", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "salt3 = u\"\\u0020827634876\"", - "line_num": 3, + "line": "salt4 = {\"salt5\": \"my124%#$@s\\x04clt\\0\"}", + "line_num": 4, "path": "tests/samples/salt.py", "info": "", - "value": "\\u0020827634876", - "value_start": 10, - "value_end": 25, - "variable": "salt3", + "value": "my124%#$@s\\x04clt\\0", + "value_start": 19, + "value_end": 38, + "variable": "salt5", + "variable_start": 10, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.796105389090387, + "entropy": 2.6959504039350857, "valid": false } } @@ -9507,24 +8148,26 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.69654, + "ml_probability": 0.665, "rule": "Salt", "severity": "medium", "confidence": "moderate", "line_data_list": [ { - "line": "salt4 = {\"salt4\": \"my124%#$@s\\x04clt\\0\"}", - "line_num": 4, + "line": "json_escaped = \"{\\\\\\\"salt8\\\\\\\":\\\\\\\"4b9a6d8b638eb0c6\\\\\\\"}\"", + "line_num": 5, "path": "tests/samples/salt.py", "info": "", - "value": "my124%#$@s\\x04clt\\0", - "value_start": 19, - "value_end": 38, - "variable": "salt4", + "value": "4b9a6d8b638eb0c6", + "value_start": 35, + "value_end": 51, + "variable": "salt8", + "variable_start": 21, + "variable_end": 26, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 2.6959504039350857, - "valid": false + "iterator": "BASE36_CHARS", + "entropy": 3.2806390622295662, + "valid": true } } ] @@ -9546,6 +8189,8 @@ "value_start": 0, "value_end": 36, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.3705246708692047, @@ -9571,6 +8216,8 @@ "value_start": 18, "value_end": 56, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.6658566472141003, @@ -9596,6 +8243,8 @@ "value_start": 0, "value_end": 31, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.029574370937287, @@ -9621,6 +8270,8 @@ "value_start": 21, "value_end": 93, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.843520703364327, @@ -9646,6 +8297,8 @@ "value_start": 12, "value_end": 76, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.472678031846025, @@ -9671,6 +8324,8 @@ "value_start": 0, "value_end": 29, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.181675184876157, @@ -9696,6 +8351,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.532808692053926, @@ -9721,6 +8378,8 @@ "value_start": 0, "value_end": 50, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.559610565373458, @@ -9746,6 +8405,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -9771,6 +8432,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.4375, @@ -9796,6 +8459,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -9821,6 +8486,8 @@ "value_start": 0, "value_end": 32, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.375, @@ -9846,6 +8513,8 @@ "value_start": 0, "value_end": 85, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.6983183218203175, @@ -9871,6 +8540,8 @@ "value_start": 0, "value_end": 45, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.697662125333613, @@ -9879,31 +8550,6 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99704, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", - "line_num": 17, - "path": "tests/samples/test.eml", - "info": "", - "value": "eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o", - "value_start": 0, - "value_end": 76, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.282347539953402, - "valid": true - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -9921,6 +8567,8 @@ "value_start": 15, "value_end": 109, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0296677144829305, @@ -9931,33 +8579,8 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", - "confidence": "moderate", - "line_data_list": [ - { - "line": "token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "line_num": 18, - "path": "tests/samples/test2.eml", - "info": "", - "value": "eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg", - "value_start": 15, - "value_end": 109, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.0296677144829305, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -9971,6 +8594,8 @@ "value_start": 15, "value_end": 109, "variable": "token in text", + "variable_start": 0, + "variable_end": 13, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.0296677144829305, @@ -9982,7 +8607,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99401, + "ml_probability": 0.804, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -9996,6 +8621,8 @@ "value_start": 19, "value_end": 44, "variable": "gi_reo_gi_token", + "variable_start": 0, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.133660689688186, @@ -10007,7 +8634,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.98366, + "ml_probability": 0.716, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -10021,6 +8648,8 @@ "value_start": 19, "value_end": 47, "variable": "DemoToken", + "variable_start": 8, + "variable_end": 17, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.039148671903071, @@ -10032,7 +8661,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99833, + "ml_probability": 0.999, "rule": "Token", "severity": "medium", "confidence": "moderate", @@ -10046,6 +8675,8 @@ "value_start": 16, "value_end": 48, "variable": "tp_token_value", + "variable_start": 0, + "variable_end": 14, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.6014097655573916, @@ -10071,6 +8702,8 @@ "value_start": 12, "value_end": 46, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "HEX_CHARS", "entropy": 3.7215926003976607, @@ -10082,7 +8715,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99877, + "ml_probability": 0.994, "rule": "URL Credentials", "severity": "high", "confidence": "moderate", @@ -10095,7 +8728,9 @@ "value": "dh3sjr8b", "value_start": 22, "value_end": 30, - "variable": null, + "variable": "mongodb://", + "variable_start": 5, + "variable_end": 15, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.0, @@ -10107,7 +8742,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.99634, + "ml_probability": 1.0, "rule": "URL Credentials", "severity": "high", "confidence": "moderate", @@ -10120,7 +8755,9 @@ "value": "5WdF4f2jE76a", "value_start": 55, "value_end": 67, - "variable": null, + "variable": "dbconnection://", + "variable_start": 32, + "variable_end": 47, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.584962500721156, @@ -10129,6 +8766,168 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Credential", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "url = \"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\";", + "line_num": 3, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "546DFS64N90P3AW7DX%2Fkeep", + "value_start": 49, + "value_end": 74, + "variable": "Credential", + "variable_start": 38, + "variable_end": 48, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 4.058101942183734, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.993, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "// \"fp://no.host.real/any/path/to/nowhere/\",\"key\":\"f45VgF8jX79o@anydata.com\"", + "line_num": 7, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "f45VgF8jX79o@anydata.com", + "value_start": 51, + "value_end": 75, + "variable": "key", + "variable_start": 45, + "variable_end": 48, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.348308333814105, + "valid": true + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.971, + "rule": "Key", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", + "line_num": 10, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "3487263-2384579834-234732875-345", + "value_start": 40, + "value_end": 72, + "variable": "key", + "variable_start": 36, + "variable_end": 39, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 2.6557496115311405, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 1.0, + "rule": "Credential", + "severity": "medium", + "confidence": "moderate", + "line_data_list": [ + { + "line": "39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2", + "line_num": 10, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "546DFS64N90P3AW7DX", + "value_start": 17, + "value_end": 35, + "variable": "Credential", + "variable_start": 6, + "variable_end": 16, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.836591668108979, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.989, + "rule": "URL Credentials", + "severity": "high", + "confidence": "moderate", + "line_data_list": [ + { + "line": "email_as_login = \"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\";", + "line_num": 13, + "path": "tests/samples/url_cred.js", + "info": "", + "value": "FnD83JZs", + "value_start": 44, + "value_end": 52, + "variable": "smtps://", + "variable_start": 18, + "variable_end": 26, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.0, + "valid": false + } + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "UUID", + "severity": "info", + "confidence": "strong", + "line_data_list": [ + { + "line": "bace4d19-fa7e-beef-cafe-9129474bcd81 # tp", + "line_num": 1, + "path": "tests/samples/uuid", + "info": "", + "value": "bace4d19-fa7e-beef-cafe-9129474bcd81", + "value_start": 0, + "value_end": 36, + "variable": null, + "variable_start": -2, + "variable_end": -2, + "entropy_validation": { + "iterator": "BASE36_CHARS", + "entropy": 3.2373263071270246, + "valid": true + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -10146,6 +8945,8 @@ "value_start": 7, "value_end": 485, "variable": null, + "variable_start": -2, + "variable_end": -2, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 5.345127246505981, @@ -10157,7 +8958,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.87752, + "ml_probability": 0.911, "rule": "Password", "severity": "medium", "confidence": "moderate", @@ -10171,6 +8972,8 @@ "value_start": 11, "value_end": 18, "variable": "password", + "variable_start": 0, + "variable_end": 8, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 2.120589933192232, diff --git a/tests/file_handler/test_data_content_provider.py b/tests/file_handler/test_data_content_provider.py index 70f3deb39..b608ff08f 100644 --- a/tests/file_handler/test_data_content_provider.py +++ b/tests/file_handler/test_data_content_provider.py @@ -144,7 +144,7 @@ def test_scan_zipfile_p(self) -> None: self.assertEqual(1, len(file_extractors)) # single extractor zip_scan_results = cs.file_scan(file_extractors[0]) - self.assertGreater(len_samples_scan_results, len(zip_scan_results)) + self.assertGreaterEqual(len_samples_scan_results, len(zip_scan_results)) cs.credential_manager.set_credentials(zip_scan_results) cs.post_processing() diff --git a/tests/filters/conftest.py b/tests/filters/conftest.py index 02ff2e0d9..2176d0910 100644 --- a/tests/filters/conftest.py +++ b/tests/filters/conftest.py @@ -19,4 +19,4 @@ def success_line(request) -> str: DUMMY_DESCRIPTOR = Descriptor("", "", "") -DUMMY_ANALYSIS_TARGET = AnalysisTarget("", 1, [], DUMMY_DESCRIPTOR) +DUMMY_ANALYSIS_TARGET = AnalysisTarget(line_pos=0, lines=[""], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) diff --git a/tests/filters/test_line_git_binary_check.py b/tests/filters/test_line_git_binary_check.py index 05118bf36..8f20208a1 100644 --- a/tests/filters/test_line_git_binary_check.py +++ b/tests/filters/test_line_git_binary_check.py @@ -1,7 +1,8 @@ import pytest +from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import LineSpecificKeyCheck, LineGitBinaryCheck -from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET +from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET, DUMMY_DESCRIPTOR from tests.test_utils.dummy_line_data import get_line_data @@ -11,10 +12,12 @@ class TestLineGitBinaryCheck: ['{"test":1,"pw":"sn2e8dgWwW","payload":"EYlS}b+C(YT)lWLGxNdj7Pw=w"}', 'XcmV?d00001']) def test_line_specific_key_check_p(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) - assert LineGitBinaryCheck().run(cred_candidate, DUMMY_ANALYSIS_TARGET) is False + target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) + assert LineGitBinaryCheck().run(cred_candidate, target) is False @pytest.mark.parametrize("line", ['zxNdj)EYlS}b8JGyg7Pw=wujtWvwg9)mv+;vvr}dADtX-(^(6N+C(YT)lWLG7tdu$7', 'HcmV?d00001']) def test_line_specific_key_check_n(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) - assert LineGitBinaryCheck().run(cred_candidate, DUMMY_ANALYSIS_TARGET) is True + target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) + assert LineGitBinaryCheck().run(cred_candidate, target) is True diff --git a/tests/filters/test_line_specific_key_check.py b/tests/filters/test_line_specific_key_check.py index b0ddff8d6..c55a3cb3f 100644 --- a/tests/filters/test_line_specific_key_check.py +++ b/tests/filters/test_line_specific_key_check.py @@ -1,7 +1,8 @@ import pytest +from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.filters import LineSpecificKeyCheck -from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET +from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR from tests.test_utils.dummy_line_data import get_line_data @@ -12,12 +13,16 @@ class TestLineSpecificKeyCheck: ]) def test_line_specific_key_check_p(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) - assert LineSpecificKeyCheck().run(cred_candidate, DUMMY_ANALYSIS_TARGET) is False + target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) + assert LineSpecificKeyCheck().run(cred_candidate, target) is False @pytest.mark.parametrize("line", [ '"AwsAccessKey": enc("AKIAGIREOGIAWSKEY123"),', - '"AwsAccessKey": "AKIAGIREXAMPLEKEY123"', + '"AwsAccessKey as example": "AKIAGIREXAMPLEKEY123"', ]) def test_line_specific_key_check_n(self, file_path: pytest.fixture, line: str) -> None: cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) - assert LineSpecificKeyCheck().run(cred_candidate, DUMMY_ANALYSIS_TARGET) is True + # LINE_VALUE_PATTERN does not detect a value position + cred_candidate.value_start = line.find("AKIA") + target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR) + assert LineSpecificKeyCheck().run(cred_candidate, target) is True diff --git a/tests/filters/test_separator_unusual_check.py b/tests/filters/test_separator_unusual_check.py deleted file mode 100644 index 692f2ced9..000000000 --- a/tests/filters/test_separator_unusual_check.py +++ /dev/null @@ -1,30 +0,0 @@ -import pytest - -from credsweeper.filters import SeparatorUnusualCheck -from tests.filters.conftest import DUMMY_ANALYSIS_TARGET -from tests.test_utils.dummy_line_data import get_line_data - - -class TestSeparatorUnusualCheck: - - @pytest.mark.parametrize("line", [ - "password = crackle!", - ]) - def test_separator_unusual_check_p(self, file_path: pytest.fixture, line: str) -> None: - line_data = get_line_data(file_path, - line=line, - pattern="(?Ppassword)[^:='\"`<>]*\\s*(?P=)\\s*(?P.*$)") - assert SeparatorUnusualCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False - - @pytest.mark.parametrize("line", [ - "password crackle!", - "password ++ crackle!", - "password >> crackle!", - "password == crackle!", - "password != crackle!", - ]) - def test_separator_unusual_check_n(self, file_path: pytest.fixture, line: str) -> None: - line_data = get_line_data(file_path, - line=line, - pattern="(?Ppassword)[^:='\"`<>]*\\s*(?P=)\\s*(?P.*$)") - assert SeparatorUnusualCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_allowlist_check.py b/tests/filters/test_value_allowlist_check.py index 9e50eecf2..c403f4346 100644 --- a/tests/filters/test_value_allowlist_check.py +++ b/tests/filters/test_value_allowlist_check.py @@ -15,7 +15,3 @@ def test_value_allowlist_check_p(self, file_path: pytest.fixture, success_line: def test_value_allowlist_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueAllowlistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_allowlist_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueAllowlistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_array_dictionary_check.py b/tests/filters/test_value_array_dictionary_check.py index 4319374e9..3ea0cbd7f 100644 --- a/tests/filters/test_value_array_dictionary_check.py +++ b/tests/filters/test_value_array_dictionary_check.py @@ -44,7 +44,3 @@ def test_array_assignment_p(self, token_rule: Rule, file_path: pytest.fixture, l """Evaluate that filter do not remove assignments to array or dictionary declaration""" line_data = get_line_data(file_path, line=line, pattern=token_rule.patterns[0]) assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False - - def test_value_array_dictionary_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_atlassian_token_check.py b/tests/filters/test_value_atlassian_token_check.py index 633825151..f5c16220e 100644 --- a/tests/filters/test_value_atlassian_token_check.py +++ b/tests/filters/test_value_atlassian_token_check.py @@ -33,7 +33,3 @@ def test_value_structured_token_check_n(self, file_path: pytest.fixture, line: s assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is True bbdc_line_data = get_line_data(file_path, line=f"ATBB{encoded_line[:28]}012345678", pattern=LINE_VALUE_PATTERN) assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_structured_token_check_empty_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueAtlassianTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_azure_token_check.py b/tests/filters/test_value_azure_token_check.py new file mode 100644 index 000000000..fab078169 --- /dev/null +++ b/tests/filters/test_value_azure_token_check.py @@ -0,0 +1,26 @@ +import unittest + +from credsweeper.filters import ValueAzureTokenCheck +from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET +from tests.test_utils.dummy_line_data import get_line_data + + +class TestValueAzureTokenCheck(unittest.TestCase): + + def test_value_AzureToken_check_p(self): + self.assertTrue(ValueAzureTokenCheck().run(get_line_data(line=""), DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueAzureTokenCheck().run(get_line_data(line="eyJungle", pattern=LINE_VALUE_PATTERN), + DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueAzureTokenCheck().run( + get_line_data(line="eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo", pattern=LINE_VALUE_PATTERN), + DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueAzureTokenCheck().run( + get_line_data(line="eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo.eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo" + ".eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo", + pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) + + def test_value_AzureToken_check_n(self): + self.assertFalse(ValueAzureTokenCheck().run( + get_line_data(line="eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo.eyJpc3MiOjEsImV4cCI6MiwiaWF0IjozfQo" + ".1234567890qwertyuiopasdfghjklzxc", + pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) diff --git a/tests/filters/test_value_base32_data_check.py b/tests/filters/test_value_base32_data_check.py index 8011d1d76..845292da9 100644 --- a/tests/filters/test_value_base32_data_check.py +++ b/tests/filters/test_value_base32_data_check.py @@ -16,7 +16,3 @@ def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> No def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBase32DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_entropy_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueBase32DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_base64_data_check.py b/tests/filters/test_value_base64_data_check.py index 3914e3b90..e279df61f 100644 --- a/tests/filters/test_value_base64_data_check.py +++ b/tests/filters/test_value_base64_data_check.py @@ -16,7 +16,3 @@ def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> No def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBase64DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_entropy_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueBase64DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_base64_part_check.py b/tests/filters/test_value_base64_part_check.py new file mode 100644 index 000000000..790ca9008 --- /dev/null +++ b/tests/filters/test_value_base64_part_check.py @@ -0,0 +1,33 @@ +import re +import unittest + +from credsweeper.credentials import LineData +from credsweeper.filters import ValueBase64PartCheck +from tests.filters.conftest import DUMMY_ANALYSIS_TARGET + + +class TestValueBase64PartCheck(unittest.TestCase): + EAA_PATTERN = re.compile(r"(?P\bEAA[0-9A-Za-z]{32})") + + def test_value_check_n(self) -> None: + line_data = LineData(config=None, + path="dummy", + file_type="", + line="qcE81rS+FJHuvg39lz4T/EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eo" + "se0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + info="", + line_num=1, + line_pos=0, + pattern=TestValueBase64PartCheck.EAA_PATTERN) + self.assertTrue(ValueBase64PartCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) + + def test_value_check_p(self) -> None: + line_data = LineData(config=None, + path="dummy", + file_type="", + line="http://meta.test/api/EAACRvAWiwzR8rcXFsLiUH13ybj0tdEa?x=login", + info="", + line_num=1, + line_pos=0, + pattern=TestValueBase64PartCheck.EAA_PATTERN) + self.assertFalse(ValueBase64PartCheck().run(line_data, DUMMY_ANALYSIS_TARGET)) diff --git a/tests/filters/test_value_blocklist_check.py b/tests/filters/test_value_blocklist_check.py index 4523dd79d..ba10a6768 100644 --- a/tests/filters/test_value_blocklist_check.py +++ b/tests/filters/test_value_blocklist_check.py @@ -17,7 +17,3 @@ def test_value_blocklist_p(self, file_path: pytest.fixture, success_line: pytest def test_value_blocklist_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueBlocklistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_blocklist_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueBlocklistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_camel_case_check.py b/tests/filters/test_value_camel_case_check.py index 0393a1d83..8e623d386 100644 --- a/tests/filters/test_value_camel_case_check.py +++ b/tests/filters/test_value_camel_case_check.py @@ -15,7 +15,3 @@ def test_value_camelcase_p(self, file_path: pytest.fixture, success_line: pytest def test_value_camelcase_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueCamelCaseCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_camelcase_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueCamelCaseCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_couple_keyword_check.py b/tests/filters/test_value_couple_keyword_check.py index 6bc5f9653..4b868a71c 100644 --- a/tests/filters/test_value_couple_keyword_check.py +++ b/tests/filters/test_value_couple_keyword_check.py @@ -18,7 +18,3 @@ def test_value_couple_keyword_check_p(self, file_path: pytest.fixture, line: str def test_value_couple_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueCoupleKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_couple_keyword_check_empty_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueCoupleKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_dictionary_keyword_check.py b/tests/filters/test_value_dictionary_keyword_check.py index 695ea0ccf..f6bbf5c09 100644 --- a/tests/filters/test_value_dictionary_keyword_check.py +++ b/tests/filters/test_value_dictionary_keyword_check.py @@ -15,8 +15,3 @@ def test_value_dictionary_keyword_check_p(self, file_path: pytest.fixture, succe def test_value_dictionary_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueDictionaryKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_dictionary_keyword_check_none_value_n(self, file_path: pytest.fixture, - success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueDictionaryKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_dictionary_value_length_check.py b/tests/filters/test_value_dictionary_value_length_check.py index a33dc586a..9de203b1c 100644 --- a/tests/filters/test_value_dictionary_value_length_check.py +++ b/tests/filters/test_value_dictionary_value_length_check.py @@ -16,8 +16,3 @@ def test_value_dictionary_value_length_check_p(self, file_path: pytest.fixture, def test_value_dictionary_value_length_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueDictionaryValueLengthCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_dictionary_value_length_check_none_value_n(self, file_path: pytest.fixture, - success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueDictionaryValueLengthCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_entropy_base32_check.py b/tests/filters/test_value_entropy_base32_check.py index f7da3c1e8..cf824bca5 100644 --- a/tests/filters/test_value_entropy_base32_check.py +++ b/tests/filters/test_value_entropy_base32_check.py @@ -16,7 +16,3 @@ def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> No def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_entropy_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueEntropyBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_entropy_base36_check.py b/tests/filters/test_value_entropy_base36_check.py index 24a9c037a..e45d0276b 100644 --- a/tests/filters/test_value_entropy_base36_check.py +++ b/tests/filters/test_value_entropy_base36_check.py @@ -16,7 +16,3 @@ def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> No def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_entropy_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueEntropyBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_entropy_base64_check.py b/tests/filters/test_value_entropy_base64_check.py index 91857b314..f91fdaf11 100644 --- a/tests/filters/test_value_entropy_base64_check.py +++ b/tests/filters/test_value_entropy_base64_check.py @@ -16,7 +16,3 @@ def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> No def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueEntropyBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_entropy_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueEntropyBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_file_path_check.py b/tests/filters/test_value_file_path_check.py index 9c1577475..3a1697014 100644 --- a/tests/filters/test_value_file_path_check.py +++ b/tests/filters/test_value_file_path_check.py @@ -7,18 +7,27 @@ class TestValueFilePathCheck: - def test_value_file_path_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN) - assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False - @pytest.mark.parametrize("line", [ - "/Crackle/filepath", "C:\\\\Crackle\\filepath", "crackle/filepath", "crackle/file.path", - "file:///Crackle/filepath/" + "5//0KCPafDhZvtCwqrsyiKFeDGT_0ZGHiI-E0ClIWrLC7tZ1WE5vHc4-Y2qi1IhPy3Pz5fmCe9OPIxEZUONUg7SWJF9nwQ_j2lIdXU0", ]) - def test_value_file_path_check_n(self, file_path: pytest.fixture, line: str) -> None: + def test_value_file_path_check_p(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) - assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True + assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False - def test_value_file_path_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) + @pytest.mark.parametrize( + "line", + [ + "crackle/filepath.txt", + "/home/user/tmp", # simple path + "../..", # path + "dir/..", # path + "../dir", # path + "file:///Crackle/filepath/", # path from browser url + "~/.custompass", # path with synonym + "./sshpass.sh", # path with synonym + "crackle/file.path", # + "C:\\Crackle\\filepath", # + ]) + def test_value_file_path_check_n(self, file_path: pytest.fixture, line: str) -> None: + line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_first_word_check.py b/tests/filters/test_value_first_word_check.py index 69d41d2bb..528138843 100644 --- a/tests/filters/test_value_first_word_check.py +++ b/tests/filters/test_value_first_word_check.py @@ -15,7 +15,3 @@ def test_value_first_word_check_p(self, file_path: pytest.fixture, success_line: def test_value_first_word_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueFirstWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_first_word_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueFirstWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_grafana_check.py b/tests/filters/test_value_grafana_check.py index eb3952425..9e86b395b 100644 --- a/tests/filters/test_value_grafana_check.py +++ b/tests/filters/test_value_grafana_check.py @@ -28,7 +28,3 @@ def test_value_grafana_n(self, file_path: pytest.fixture, line: str) -> None: assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True line_data = get_line_data(file_path, line=f"glc_{payload}", pattern=LINE_VALUE_PATTERN) assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_grafana_empty_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_grafana_service_check.py b/tests/filters/test_value_grafana_service_check.py new file mode 100644 index 000000000..16eee9454 --- /dev/null +++ b/tests/filters/test_value_grafana_service_check.py @@ -0,0 +1,18 @@ +import pytest + +from credsweeper.filters import ValueGrafanaServiceCheck +from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET +from tests.test_utils.dummy_line_data import get_line_data + + +class TestValueGrafanaServiceCheck: + + @pytest.mark.parametrize("line", ["glsa_DuMmY-T0K3N-f0R-tHe-Te5t-CRC32Ok_770c8cda"]) + def test_value_sgrafana_service_check_p(self, file_path: pytest.fixture, line: str) -> None: + glsa_line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) + assert ValueGrafanaServiceCheck().run(glsa_line_data, DUMMY_ANALYSIS_TARGET) is False + + @pytest.mark.parametrize("line", ["glpl_DuMmY-T0K3N-f0R-tHe-Te5t-CRC32Ok_770c8CdA"]) + def test_value_sgrafana_service_check_n(self, file_path: pytest.fixture, line: str) -> None: + glsa_line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) + assert ValueGrafanaServiceCheck().run(glsa_line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_hex_number_check.py b/tests/filters/test_value_hex_number_check.py index b60f8730d..a7778a297 100644 --- a/tests/filters/test_value_hex_number_check.py +++ b/tests/filters/test_value_hex_number_check.py @@ -16,7 +16,3 @@ def test_value_number_check_p(self, file_path: pytest.fixture, line: str) -> Non def test_value_number_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueHexNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_number_check_none_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueHexNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_json_web_token_check.py b/tests/filters/test_value_json_web_token_check.py index 54e2a15fc..4cb701956 100644 --- a/tests/filters/test_value_json_web_token_check.py +++ b/tests/filters/test_value_json_web_token_check.py @@ -1,32 +1,43 @@ -import base64 - -import pytest +import unittest from credsweeper.filters import ValueJsonWebTokenCheck from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET from tests.test_utils.dummy_line_data import get_line_data -class TestValueJsonWebTokenCheck: - - @pytest.mark.parametrize("line", ["12345:asbdsa:28yd"]) - def test_value_jwt_check_p(self, file_path: pytest.fixture, line: str) -> None: - encoded_line = base64.b64encode(line.encode('ascii')).decode('ascii') - jwt_like_line = base64.b64encode('{"typ":"JWT", "dummy": false}'.encode('ascii')).decode('ascii') - jwt_line_data = get_line_data(file_path, line=f"{jwt_like_line}.{encoded_line}", pattern=LINE_VALUE_PATTERN) - assert ValueJsonWebTokenCheck().run(jwt_line_data, DUMMY_ANALYSIS_TARGET) is False - # partially line - jwt_line_data = get_line_data(file_path, line=f"{jwt_like_line}.AnyTailOfString", pattern=LINE_VALUE_PATTERN) - assert ValueJsonWebTokenCheck().run(jwt_line_data, DUMMY_ANALYSIS_TARGET) is False +class TestValueJsonWebTokenCheck(unittest.TestCase): - @pytest.mark.parametrize("line", ["1234f:asbdsa:28yd"]) - def test_value_jwt_check_n(self, file_path: pytest.fixture, line: str) -> None: - encoded_line = base64.b64encode(line.encode('ascii')).decode('ascii') - jwt_line_data = get_line_data(file_path, line=f"eyJungle.{encoded_line}", pattern=LINE_VALUE_PATTERN) - assert ValueJsonWebTokenCheck().run(jwt_line_data, DUMMY_ANALYSIS_TARGET) is True - jwt_line_data = get_line_data(file_path, line="eyJungle", pattern=LINE_VALUE_PATTERN) - assert ValueJsonWebTokenCheck().run(jwt_line_data, DUMMY_ANALYSIS_TARGET) is True + def test_value_jwt_check_p(self): + self.assertTrue(ValueJsonWebTokenCheck().run(get_line_data(line="", pattern=LINE_VALUE_PATTERN), + DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueJsonWebTokenCheck().run(get_line_data(line="eyJungle", pattern=LINE_VALUE_PATTERN), + DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueJsonWebTokenCheck().run( + get_line_data(line="1234567890qwertyuiopasdfghjklzxc", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueJsonWebTokenCheck().run( + get_line_data(line="eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.eyJleHAiOjY1NTM2fQo", + pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueJsonWebTokenCheck().run( + get_line_data(line="eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.AAAAAAAAAAAAAAAAAAAAAAA", + pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) + self.assertTrue(ValueJsonWebTokenCheck().run( + get_line_data(line="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.x3.GFsFyGiCUIP5VHI9CEJL9thWsGjSZf1fJfarNk-LGTM", + pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) - def test_value_jwt_check_empty_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueJsonWebTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True + def test_value_jwt_check_n(self): + self.assertFalse(ValueJsonWebTokenCheck().run( + get_line_data(line="eyJhbGciOiJQUzM4NCJ9.eyJkdW1teSI6bnVsbH0.eyJpc3MiOiJqb2UifQ." \ + "_VP9ZxcPkOptWScOUMXriLH31bTcrg0YhlYL-A7TTHLX7LTDKjggtVq3Nmdl4GIS" \ + "gJdM7GHHZOJHckUjgD-T3X6oHQanKqjpWjU-GxcnOkM86e0joZgJUL7CpHUt7e3W" \ + "MhbUrOCyCFRrxOXtuTvGr2m_LdS7I5OyZ4xEP4JRcsOgOnGq-MEWmLqrRvc4zy5m" \ + "pM6tJwJXI8fr1tF4pcAZxXR17ITCrocVSRC6NuWOVzh_XyyEVRUfqlDbJnU2Z_I0" \ + "dfEQIcC6K5hAgQGSZQC_pQDA51RUoUHa9KfNskerI681fJ8mbjIlbf68CFdXZnjE" \ + "zobUhMn5Z544PF9DjW1BVtsQgXtHlSDFxl6MIMVdvM8oLRbrjlf6BYCRnCxuTA_y" \ + "Ui1o9ndy7ckISHQVhuYFKu78l7nqC4heghK_Gw4h7EB7s8eEuUC-D6JjVtX10IyS" \ + "vCRkRo7f8dWQTjFLs7mlPowjRz0cP5J-MmCoegKHYagOHZ_ArXOR91_u8jMdwmOf", + pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) + self.assertFalse(ValueJsonWebTokenCheck().run( + get_line_data(line="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." \ + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." \ + ".e30.GFsFyGiCUIP5VHI9CEJL9thWsGjSZf1fJfarNk-LGTM", + pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET)) diff --git a/tests/filters/test_value_last_word_check.py b/tests/filters/test_value_last_word_check.py index cc6916847..7e036e86e 100644 --- a/tests/filters/test_value_last_word_check.py +++ b/tests/filters/test_value_last_word_check.py @@ -15,7 +15,3 @@ def test_value_last_word_check_p(self, file_path: pytest.fixture, success_line: def test_value_last_word_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueLastWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_last_word_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueLastWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_length_check.py b/tests/filters/test_value_length_check.py deleted file mode 100644 index ad62a27f1..000000000 --- a/tests/filters/test_value_length_check.py +++ /dev/null @@ -1,24 +0,0 @@ -import pytest - -from credsweeper.config import Config -from credsweeper.filters import ValueLengthCheck -from tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET -from tests.test_utils.dummy_line_data import get_line_data - - -class TestValueLengthCheck: - - def test_value_length_check_p(self, file_path: pytest.fixture, config: Config, - success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN) - assert ValueLengthCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False - - @pytest.mark.parametrize("line", ["Cra"]) - def test_value_length_check_n(self, file_path: pytest.fixture, config: Config, line: str) -> None: - line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) - assert ValueLengthCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_length_check_none_value_n(self, file_path: pytest.fixture, config: Config, - success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueLengthCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_method_check.py b/tests/filters/test_value_method_check.py index e8cf4d73c..4b2967e39 100644 --- a/tests/filters/test_value_method_check.py +++ b/tests/filters/test_value_method_check.py @@ -15,7 +15,3 @@ def test_value_method_check_p(self, file_path: pytest.fixture, success_line: pyt def test_value_method_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueMethodCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_method_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueMethodCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_not_allowed_pattern.py b/tests/filters/test_value_not_allowed_pattern.py index c168d8bb7..cc1e24059 100644 --- a/tests/filters/test_value_not_allowed_pattern.py +++ b/tests/filters/test_value_not_allowed_pattern.py @@ -2,7 +2,7 @@ from credsweeper.filters import ValueNotAllowedPatternCheck from credsweeper.rules import Rule -from tests.filters.conftest import DUMMY_ANALYSIS_TARGET +from tests.filters.conftest import DUMMY_ANALYSIS_TARGET, LINE_VALUE_PATTERN from tests.test_utils.dummy_line_data import get_line_data @@ -30,11 +30,7 @@ def test_value_last_word_check_p(self, token_rule: Rule, file_path: pytest.fixtu line_data = get_line_data(file_path, line=success_line, pattern=token_rule.patterns[0]) assert ValueNotAllowedPatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False - @pytest.mark.parametrize("line", ["passwords: [{", "passwords = List", "passwords = \\n"]) + @pytest.mark.parametrize("line", ["[{ ", "\\n"]) def test_value_last_word_check_n(self, token_rule: Rule, file_path: pytest.fixture, line: str) -> None: - line_data = get_line_data(file_path, line=line, pattern=token_rule.patterns[0]) - assert ValueNotAllowedPatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_last_word_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) + line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueNotAllowedPatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_not_part_encoded.py b/tests/filters/test_value_not_part_encoded.py index 73fc3fe83..4550b6a8d 100644 --- a/tests/filters/test_value_not_part_encoded.py +++ b/tests/filters/test_value_not_part_encoded.py @@ -25,7 +25,3 @@ def test_value_not_part_encoded_n(self, config: pytest.fixture) -> None: target = AnalysisTarget(1, [Chars.BASE64STD_CHARS.value, "XXX"], [1, 2], DUMMY_DESCRIPTOR) line_data = LineData(config, "XXX", 1, 333, "", "", "", LINE_VALUE_PATTERN) assert ValueNotPartEncodedCheck().run(line_data, target) is True - - def test_value_not_part_encoded_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueNotPartEncodedCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_number_check.py b/tests/filters/test_value_number_check.py index c5b7811d1..db0a3a0fc 100644 --- a/tests/filters/test_value_number_check.py +++ b/tests/filters/test_value_number_check.py @@ -19,7 +19,3 @@ def test_value_number_check_p(self, file_path: pytest.fixture, line: str) -> Non def test_value_number_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_number_check_none_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_pattern_check.py b/tests/filters/test_value_pattern_check.py index 41c011f3c..8bcbbc2da 100644 --- a/tests/filters/test_value_pattern_check.py +++ b/tests/filters/test_value_pattern_check.py @@ -55,8 +55,3 @@ def test_value_similarity_check_p(self, file_path: pytest.fixture, config: Confi def test_value_similarity_check_n(self, file_path: pytest.fixture, config: Config, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValuePatternCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_similarity_check_none_value_n(self, file_path: pytest.fixture, config: Config, - success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValuePatternCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_split_keyword_check.py b/tests/filters/test_value_split_keyword_check.py index 35ae3567c..0c1fe8167 100644 --- a/tests/filters/test_value_split_keyword_check.py +++ b/tests/filters/test_value_split_keyword_check.py @@ -16,7 +16,3 @@ def test_value_split_keyword_check_p(self, file_path: pytest.fixture, line: str) def test_value_split_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueSplitKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_split_keyword_check_none_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueSplitKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_string_type_check.py b/tests/filters/test_value_string_type_check.py index 9dc9f9868..d2cb157e3 100644 --- a/tests/filters/test_value_string_type_check.py +++ b/tests/filters/test_value_string_type_check.py @@ -27,10 +27,11 @@ def test_value_string_type_check_n(self, line: str, config: Config) -> None: @pytest.mark.parametrize("line", success_lines) def test_value_string_type_check_none_path_n(self, line: str, config: Config) -> None: + # even file_path is None it means "" - no extension file_path = None pattern = KeywordPattern.get_keyword_pattern("test") line_data = get_line_data(config, file_path, line=line, pattern=pattern) - assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True + assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False @pytest.mark.parametrize("line", fail_line) def test_value_string_type_check_not_quoted_source_file_p(self, line: str, config: Config) -> None: @@ -43,9 +44,3 @@ def test_value_string_type_check_not_quoted_source_file_p(self, line: str, confi pattern=pattern, ) assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False - - @pytest.mark.parametrize("line", success_lines) - def test_value_string_type_check_none_value_n(self, line: str, config: Config) -> None: - file_path = "path.py" - line_data = get_line_data(config, file_path, line=line) - assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_token_base32_check.py b/tests/filters/test_value_token_base32_check.py index f576641b5..d01b152fa 100644 --- a/tests/filters/test_value_token_base32_check.py +++ b/tests/filters/test_value_token_base32_check.py @@ -16,7 +16,3 @@ def test_value_token_base32_check_p(self, file_path: pytest.fixture, line: str) def test_value_token_base32_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_token_base32_check_empty_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueTokenBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_token_base36_check.py b/tests/filters/test_value_token_base36_check.py index b3be8625f..9e66ee63b 100644 --- a/tests/filters/test_value_token_base36_check.py +++ b/tests/filters/test_value_token_base36_check.py @@ -16,7 +16,3 @@ def test_value_token_base36_check_p(self, file_path: pytest.fixture, line: str) def test_value_token_base36_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_token_base36_check_empty_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueTokenBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_token_base64_check.py b/tests/filters/test_value_token_base64_check.py index d4683c08a..0e831d299 100644 --- a/tests/filters/test_value_token_base64_check.py +++ b/tests/filters/test_value_token_base64_check.py @@ -16,7 +16,3 @@ def test_value_token_base64_check_p(self, file_path: pytest.fixture, line: str) def test_value_token_base64_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_token_base64_check_empty_value_n(self, file_path: pytest.fixture) -> None: - line_data = get_line_data(file_path, line="") - assert ValueTokenBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_token_check.py b/tests/filters/test_value_token_check.py index 94f126d26..f2b7622d3 100644 --- a/tests/filters/test_value_token_check.py +++ b/tests/filters/test_value_token_check.py @@ -15,7 +15,3 @@ def test_value_token_check_p(self, file_path: pytest.fixture, success_line: pyte def test_value_token_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_token_check_none_value_n(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path, line=success_line) - assert ValueTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/filters/test_value_useless_word_check.py b/tests/filters/test_value_useless_word_check.py index b6dc692eb..911f3781f 100644 --- a/tests/filters/test_value_useless_word_check.py +++ b/tests/filters/test_value_useless_word_check.py @@ -11,12 +11,7 @@ def test_value_useless_word_check_p(self, file_path: pytest.fixture, success_lin line_data = get_line_data(file_path=file_path, line=success_line, pattern=LINE_VALUE_PATTERN) assert ValueUselessWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False - @pytest.mark.parametrize("line", ["{0x943058439}", "0x%", "->gi_reo_gi", "xxxxxGIREOGI", " GIREOGI"]) + @pytest.mark.parametrize("line", ["{0x943058439}", "0x%", "->gi_reo_gi", "GIREOGIEXAMPLE"]) def test_value_useless_word_check_n(self, file_path: pytest.fixture, line: str) -> None: line_data = get_line_data(file_path=file_path, line=line, pattern=LINE_VALUE_PATTERN) assert ValueUselessWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True - - def test_value_useless_word_check_none_value_n(self, file_path: pytest.fixture, - success_line: pytest.fixture) -> None: - line_data = get_line_data(file_path=file_path, line=success_line) - assert ValueUselessWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True diff --git a/tests/ml_model/test_ml_validator.py b/tests/ml_model/test_ml_validator.py index 76a209e80..3e61d2e1a 100644 --- a/tests/ml_model/test_ml_validator.py +++ b/tests/ml_model/test_ml_validator.py @@ -1,18 +1,23 @@ +import copy import unittest +from typing import Tuple + +import numpy as np from credsweeper import ThresholdPreset from credsweeper.app import APP_PATH from credsweeper.config import Config -from credsweeper.credentials import Candidate +from credsweeper.credentials import Candidate, CandidateKey from credsweeper.ml_model import MlValidator from credsweeper.utils import Util +from tests import NEGLIGIBLE_ML_THRESHOLD class TestMlValidator(unittest.TestCase): - def test_ml_validator_simple_p(self): - ml_validator = MlValidator(threshold=ThresholdPreset.medium) - assert ml_validator is not None + def setUp(self): + self.ml_validator = MlValidator(threshold=ThresholdPreset.medium) + assert self.ml_validator is not None file_name = APP_PATH / "secret" / "config.json" config_dict = Util.json_load(file_name) config_dict["validation"] = {} @@ -23,26 +28,82 @@ def test_ml_validator_simple_p(self): config_dict["doc"] = False config_dict["find_by_ext_list"] = [] config_dict["size_limit"] = None - config = Config(config_dict) - candidate = Candidate.get_dummy_candidate(config, "main.py", ".py", "test_info") + self.config = Config(config_dict) + + def test_ml_validator_simple_p(self): + + def validate(_candidate: Candidate) -> Tuple[bool, float]: + """Validate single credential candidate.""" + candidate_key = CandidateKey(_candidate.line_data_list[0]) + sample_as_batch = [(candidate_key, [_candidate])] + is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 1) + return is_cred_batch[0], probability_batch[0] + + candidate = Candidate.get_dummy_candidate(self.config, "main.py", ".py", "info") + candidate.rule_name = "Password" candidate.line_data_list[0].line = 'password="Ahga%$FiQ@Ei8"' candidate.line_data_list[0].variable = "password" + candidate.line_data_list[0].value_start = 16 + candidate.line_data_list[0].value_end = 25 candidate.line_data_list[0].value = "Ahga%$FiQ@Ei8" - decision, probability = ml_validator.validate(candidate) - self.assertAlmostEqual(probability, 0.9676, delta=0.0001) + decision, probability = validate(candidate) + self.assertAlmostEqual(0.9997520446777344, probability, delta=NEGLIGIBLE_ML_THRESHOLD) candidate.line_data_list[0].path = "sample.py" candidate.line_data_list[0].file_type = ".yaml" - decision, probability = ml_validator.validate(candidate) - self.assertAlmostEqual(probability, 0.9548, delta=0.0001) + decision, probability = validate(candidate) + self.assertAlmostEqual(0.9994515776634216, probability, delta=NEGLIGIBLE_ML_THRESHOLD) candidate.line_data_list[0].path = "test.zip" candidate.line_data_list[0].file_type = ".zip" - decision, probability = ml_validator.validate(candidate) - self.assertAlmostEqual(probability, 0.9308, delta=0.0001) + decision, probability = validate(candidate) + self.assertAlmostEqual(0.9994281530380249, probability, delta=NEGLIGIBLE_ML_THRESHOLD) candidate.line_data_list[0].path = "other.txt" candidate.line_data_list[0].file_type = ".txt" - decision, probability = ml_validator.validate(candidate) - self.assertAlmostEqual(probability, 0.8263, delta=0.0001) + decision, probability = validate(candidate) + self.assertAlmostEqual(0.9980608820915222, probability, delta=NEGLIGIBLE_ML_THRESHOLD) + + def test_ml_validator_auxiliary_p(self): + candidate = Candidate.get_dummy_candidate(self.config, "secret", "", "") + candidate.rule_name = "Secret" + candidate.line_data_list[0].line = "secret=bace4d19-dead-beef-cafe-9129474bcd81" + candidate.line_data_list[0].variable = "secret" + candidate.line_data_list[0].value_start = 7 + candidate.line_data_list[0].value_end = 43 + candidate.line_data_list[0].value = "bace4d19-dead-beef-cafe-9129474bcd81" + # auxiliary candidate for a pattern rule - without variable + aux_candidate = copy.deepcopy(candidate) + aux_candidate.line_data_list[0].variable = None + + # todo: the scores are low for current ML model - will be changed after train + + candidate_key = CandidateKey(candidate.line_data_list[0]) + sample_as_batch = [(candidate_key, [candidate])] + is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) + self.assertAlmostEqual(0.16333681344985962, probability_batch[0], delta=NEGLIGIBLE_ML_THRESHOLD) + + # auxiliary rule in train does not increase ML probability yet - will be used after next train + + aux_candidate.rule_name = "UUID" + sample_as_batch = [(candidate_key, [candidate, aux_candidate])] + is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2) + self.assertAlmostEqual(0.16333681344985962, probability_batch[0], delta=NEGLIGIBLE_ML_THRESHOLD) + + def test_extract_features_p(self): + candidate1 = Candidate.get_dummy_candidate(self.config, "main.py", ".py", "info") + candidate1.line_data_list[0].line = 'ABC123' + candidate1.line_data_list[0].variable = "ABC" + candidate1.line_data_list[0].value_start = 3 + candidate1.line_data_list[0].value_end = 6 + candidate1.line_data_list[0].value = "123" + candidate1.rule_name = "Password" + features1 = self.ml_validator.extract_features([candidate1]) + self.assertAlmostEqual(18, np.count_nonzero(features1), delta=NEGLIGIBLE_ML_THRESHOLD) + candidate2 = copy.deepcopy(candidate1) + features2 = self.ml_validator.extract_features([candidate1, candidate2]) + self.assertAlmostEqual(18, np.count_nonzero(features2), delta=NEGLIGIBLE_ML_THRESHOLD) + candidate2.rule_name = "Secret" + features3 = self.ml_validator.extract_features([candidate1, candidate2]) + self.assertAlmostEqual(19, np.count_nonzero(features3), delta=NEGLIGIBLE_ML_THRESHOLD) diff --git a/tests/rules/test_facebook_key.py b/tests/rules/test_facebook_key.py index b17666b26..590bed816 100644 --- a/tests/rules/test_facebook_key.py +++ b/tests/rules/test_facebook_key.py @@ -7,7 +7,10 @@ class TestFacebookKey(BaseTestRule): - @pytest.fixture(params=[["GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAAaBbCcDdEeCrackle\""]]) + @pytest.fixture(params=[[ + 'FACEBOOK_T0KEN = ' + '"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD"' + ]]) def lines(self, request) -> List[str]: return request.param diff --git a/tests/rules/test_jwt.py b/tests/rules/test_jwt.py index 10ec210ac..8ac1c4ec1 100644 --- a/tests/rules/test_jwt.py +++ b/tests/rules/test_jwt.py @@ -8,11 +8,11 @@ class TestJwt(BaseTestRule): @pytest.fixture(params=[[ - "jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxN", - "TE2MjM5MDIyLCJ0ZXN0IjoiSSBuZWVkIHJlYWxseSByZWFsbHkgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nI", - "GxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvb", - "mcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgb", - "G9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZ", + "jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxN" + "TE2MjM5MDIyLCJ0ZXN0IjoiSSBuZWVkIHJlYWxseSByZWFsbHkgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nI" + "GxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvb" + "mcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgb" + "G9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZ" "yBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBqd3QgdG9rZW4ifQ.4pWgA4mthx4FPPh1AZQY0luTKTQ7VOj6PGwwiANvtqg'" ]]) def lines(self, request) -> List[str]: diff --git a/tests/samples/atlassian_pat b/tests/samples/atlassian_pat index 38a176e32..baa2596f2 100644 --- a/tests/samples/atlassian_pat +++ b/tests/samples/atlassian_pat @@ -1 +1,4 @@ -ATLASSIAN = "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=2F2DE974" +ATLASSIAN = "ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68" +escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\=00203E68 +url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68 +url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68 diff --git a/tests/samples/aws_client_id b/tests/samples/aws_client_id index 3685378f5..b5a83275c 100644 --- a/tests/samples/aws_client_id +++ b/tests/samples/aws_client_id @@ -1,2 +1,4 @@ The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X the coma is necessary there ^ bariers thesting !!! +must be filtered: AKIAGIREOGIAEXAMPLE7 +filtered too: AKIALGSBKLIKEAREAL12 --access-key diff --git a/tests/samples/azure_access_token b/tests/samples/azure_access_token index 4d5d0c454..d85be0700 100644 --- a/tests/samples/azure_access_token +++ b/tests/samples/azure_access_token @@ -1 +1,3 @@ -eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd \ No newline at end of file +eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd +eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt +^^^ examples from https://learn.microsoft.com/en-us/entra/identity-platform/access-tokens \ No newline at end of file diff --git a/tests/samples/bitbucket_repository_access_token b/tests/samples/bitbucket_repository_access_token index 13d8ceeae..34a456771 100644 --- a/tests/samples/bitbucket_repository_access_token +++ b/tests/samples/bitbucket_repository_access_token @@ -1 +1 @@ -repo_access = "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=91D14AE7" \ No newline at end of file +"Bitbucket Repository Access Token" : "ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD" \ No newline at end of file diff --git a/tests/samples/discord_bot_token b/tests/samples/discord_bot_token new file mode 100644 index 000000000..333db236f --- /dev/null +++ b/tests/samples/discord_bot_token @@ -0,0 +1 @@ +MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje diff --git a/tests/samples/doc_various b/tests/samples/doc_various index c912bbced..cdcfec8ef 100644 --- a/tests/samples/doc_various +++ b/tests/samples/doc_various @@ -43,7 +43,7 @@ ssh -p 2222 # port number - not a password password for master:IhqSb1Gg gildong.hong@98.76.54.32(master/IhqSb1Gg) ID/Pass:xxxx:master/IhqSb1Gg xxxx:master/IhqSb1Gg -id:xxxx(ANYpw:IhqSb1Gg) +id:xxxx(ANYpw:IhqSb1Ga) gildong.hong@98.76.54.32,pw:IhqSb1Gg 98.76.54.32(master/IhqSb1Gg,master/IhqSb1Gg) 98.76.54.32(master/IhqSb1Gg master/IhqSb1Gg) diff --git a/tests/samples/facebook_key b/tests/samples/facebook_key index 47e94fbaf..6a949eb3d 100644 --- a/tests/samples/facebook_key +++ b/tests/samples/facebook_key @@ -1 +1,2 @@ -GI_REO_GI_FACEBOOK_TOKEN = "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF" \ No newline at end of file +GI_REO_GI_FACEBOOK_TOKEN = "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD" +1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M diff --git a/tests/samples/grafana_service_accounts b/tests/samples/grafana_service_accounts new file mode 100644 index 000000000..e2808200b --- /dev/null +++ b/tests/samples/grafana_service_accounts @@ -0,0 +1,2 @@ +glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7 +glpl_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7 diff --git a/tests/samples/hashicorp_terraform b/tests/samples/hashicorp_terraform new file mode 100644 index 000000000..08695a5dd --- /dev/null +++ b/tests/samples/hashicorp_terraform @@ -0,0 +1 @@ +Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0 \ No newline at end of file diff --git a/tests/samples/ipv4 b/tests/samples/ipv4 deleted file mode 100644 index 76f7436e2..000000000 --- a/tests/samples/ipv4 +++ /dev/null @@ -1,42 +0,0 @@ -# wrong values: -299.199.99.0 -321.500.312.32 -99.199.299.0 -version 8.8.8.8 -rfc 1.2.3.4 - -# list from https://en.wikipedia.org/wiki/Reserved_IP_addresses -0.0.0.0/8 -0.0.0.0–0.255.255.255 -10.0.0.0/8 -10.0.0.0–10.255.255.255 -100.64.0.0/10 -100.64.0.0–100.127.255.255 -127.0.0.0/8 -127.0.0.0–127.255.255.255 -169.254.0.0/16 -169.254.0.0–169.254.255.255 -172.16.0.0/12 -172.16.0.0–172.31.255.255 -192.0.0.0/24 -192.0.0.0–192.0.0.255 -192.0.2.0/24 -192.0.2.0–192.0.2.255 -192.88.99.0/24 -192.88.99.0–192.88.99.255 -192.168.0.0/16 -192.168.0.0–192.168.255.255 -198.18.0.0/15 -198.18.0.0–198.19.255.255 -198.51.100.0/24 -198.51.100.0–198.51.100.255 -203.0.113.0/24 -203.0.113.0–203.0.113.255 -224.0.0.0/4 -224.0.0.0–239.255.255.255 -233.252.0.0/24 -233.252.0.0-233.252.0.255 -240.0.0.0/4 -240.0.0.0–255.255.255.254 -255.255.255.255/32 -255.255.255.255 diff --git a/tests/samples/ipv6 b/tests/samples/ipv6 deleted file mode 100644 index 57df85ab8..000000000 --- a/tests/samples/ipv6 +++ /dev/null @@ -1,16 +0,0 @@ -# not an ipv6 -abba:03911 -1234::5678::9 - -# loopback -0000:0000:0000:0000:0000:0000:0000:0001 -::1 # fill -2001:db8:85a3:8d3:1319:8a2e:370:7348 private -fe80::1ff:fe23:4567:890a # link_local - -# dummy but valid -2004:5678::9324 -2004::5678:9 -2041:0000:140F::875B:131B -2041:0:140F::875B:131B - diff --git a/tests/samples/json_web_token b/tests/samples/json_web_token new file mode 100644 index 000000000..45e244772 --- /dev/null +++ b/tests/samples/json_web_token @@ -0,0 +1,2 @@ +detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA +not detected: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.NiIsInR5cCI6IkpXV.NiIsInR5cCI6IkpXV diff --git a/tests/samples/json_web_token.hs b/tests/samples/json_web_token.hs deleted file mode 100644 index 76f919b6c..000000000 --- a/tests/samples/json_web_token.hs +++ /dev/null @@ -1 +0,0 @@ -$payload = 'eyJgsIZgeJhvNgFpSmlP.eyJcaaF9xCe7shE0ENPiBlEJOpS' diff --git a/tests/samples/key.hs b/tests/samples/key.hs index 5a13fab50..3d197e623 100644 --- a/tests/samples/key.hs +++ b/tests/samples/key.hs @@ -2,6 +2,6 @@ prKeyValid=LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxh secret_looks_like_linux_path_1="/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF" secret_looks_like_linux_path_2="VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF" secret_looks_like_linux_path_3="VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=" -secret_looks_like_linux_path__="VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMPLE" +secret_looks_like_linux_path__="VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE" "https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true" diff --git a/tests/samples/key_value.json b/tests/samples/key_value.json index d0eeb0e2f..34bc7d835 100644 --- a/tests/samples/key_value.json +++ b/tests/samples/key_value.json @@ -7,5 +7,7 @@ "pass_mask32": "0x31c45018", "pass_mask64": "0x81103c1452dd61cd", "dummy": 0 - } + }, + "comment": "failure case below", + "≋": { "checkpkoint": [4931], "symbolsist": "\u224B" } } diff --git a/tests/samples/open_ai_token b/tests/samples/open_ai_token index e7fad68ed..ad934ce1c 100644 --- a/tests/samples/open_ai_token +++ b/tests/samples/open_ai_token @@ -1,5 +1,7 @@ # TP -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 +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 +sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio # FP -sk-T3BlbkFJT3BlbkFJT3BlbkFJT3BlbkFJT3BlbkFJT3BlbkFJ \ No newline at end of file +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 +sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk diff --git a/tests/samples/salt.py b/tests/samples/salt.py index f70d9311c..60b2fcd07 100644 --- a/tests/samples/salt.py +++ b/tests/samples/salt.py @@ -1,4 +1,5 @@ salt1 = b"\x23!\xae2389x&543@" salt2 = r"""\0x12\0x3s""" salt3 = u"\u0020827634876" -salt4 = {"salt4": "my124%#$@s\x04clt\0"} +salt4 = {"salt5": "my124%#$@s\x04clt\0"} +json_escaped = "{\\\"salt8\\\":\\\"4b9a6d8b638eb0c6\\\"}" diff --git a/tests/samples/test.html b/tests/samples/test.html index ed6d823ac..65964bccb 100644 --- a/tests/samples/test.html +++ b/tests/samples/test.html @@ -97,7 +97,7 @@ - the line will be found twice
# 100

EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF

+ the line will be found twice
# 100

EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD

@@ -114,7 +114,7 @@ nested table - + xml capability diff --git a/tests/samples/url_cred.js b/tests/samples/url_cred.js index cdd81f59f..d555f7233 100644 --- a/tests/samples/url_cred.js +++ b/tests/samples/url_cred.js @@ -1,5 +1,13 @@ const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local'); +url = "https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut"; + // note:dummyuser@example.com // "fp://no.host.real/any/path/to/nowhere/","key":"f45VgF8jX79o@anydata.com" + +/* partially line to sanitize url-like items +39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2 +*/ + +email_as_login = "smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465"; diff --git a/tests/samples/uuid b/tests/samples/uuid new file mode 100644 index 000000000..0ce05f451 --- /dev/null +++ b/tests/samples/uuid @@ -0,0 +1,2 @@ +bace4d19-fa7e-beef-cafe-9129474bcd81 # tp +12345678-1234-1234-1234-1234567890ab # fp diff --git a/tests/scanner/scan_type/test_multipattern.py b/tests/scanner/scan_type/test_multipattern.py index e15ec2808..7dcab4d0a 100644 --- a/tests/scanner/scan_type/test_multipattern.py +++ b/tests/scanner/scan_type/test_multipattern.py @@ -1,9 +1,7 @@ -import random -import string import unittest from unittest.mock import MagicMock -from credsweeper.common.constants import MAX_LINE_LENGTH +from credsweeper.common.constants import MAX_LINE_LENGTH, CHUNK_STEP_SIZE from credsweeper.config import Config from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.rules import Rule @@ -24,21 +22,23 @@ def setUp(self) -> None: "severity": "info", "confidence": "moderate", "type": "multi", - "values": ["a", "b"], + "values": ["(?Pa)", "(?Pb)"], "filter_type": [], "min_line_len": 0, "target": ["code"], }) def test_oversize_line_n(self) -> None: - long_line: str = ''.join(random.choices(string.ascii_letters, k=MAX_LINE_LENGTH)) - long_line += 'OVERSIZE' - self.assertLess(MAX_LINE_LENGTH, len(long_line)) - target = AnalysisTarget(0, [long_line, long_line], [1, 2], DUMMY_DESCRIPTOR) - self.assertEqual(0, len(MultiPattern.run(self.config, self.rule, target))) + long_line_a: str = 'x' * CHUNK_STEP_SIZE + ' a ' + 'x' * CHUNK_STEP_SIZE + long_line_b: str = 'x' * CHUNK_STEP_SIZE + ' b ' + 'x' * CHUNK_STEP_SIZE + self.assertEqual(2 * CHUNK_STEP_SIZE + 3, len(long_line_a)) + target = AnalysisTarget(0, [long_line_a, long_line_b], [1, 2], DUMMY_DESCRIPTOR) + result = MultiPattern.run(self.config, self.rule, target) + self.assertEqual(1, len(result)) def test_oversize_line_p(self) -> None: - long_line: str = ''.join(random.choices(string.ascii_letters, k=MAX_LINE_LENGTH)) + long_line: str = 'x' * MAX_LINE_LENGTH self.assertEqual(MAX_LINE_LENGTH, len(long_line)) - target = AnalysisTarget(0, [long_line, long_line], [1, 2], DUMMY_DESCRIPTOR) - self.assertLess(0, len(MultiPattern.run(self.config, self.rule, target))) + target = AnalysisTarget(0, [long_line + ' a', long_line + ' b'], [1, 2], DUMMY_DESCRIPTOR) + result = MultiPattern.run(self.config, self.rule, target) + self.assertEqual(1, len(result)) diff --git a/tests/test_main.py b/tests/test_main.py index a0514fa78..7e664004b 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,8 +1,8 @@ import io -import io import os import random import shutil +import string import tempfile import unittest from argparse import ArgumentTypeError @@ -26,13 +26,19 @@ from credsweeper.file_handler.files_provider import FilesProvider from credsweeper.file_handler.text_content_provider import TextContentProvider from credsweeper.utils import Util -from tests import SAMPLES_CRED_COUNT, SAMPLES_CRED_LINE_COUNT, SAMPLES_POST_CRED_COUNT, SAMPLES_PATH, AZ_STRING, \ - TESTS_PATH, SAMPLES_IN_DEEP_1, SAMPLES_IN_DEEP_3, SAMPLES_IN_DEEP_2, NEGLIGIBLE_ML_THRESHOLD +from tests import SAMPLES_CRED_COUNT, SAMPLES_CRED_LINE_COUNT, SAMPLES_POST_CRED_COUNT, SAMPLES_PATH, TESTS_PATH, \ + SAMPLES_IN_DEEP_1, SAMPLES_IN_DEEP_3, SAMPLES_IN_DEEP_2, NEGLIGIBLE_ML_THRESHOLD from tests.data import DATA_TEST_CFG class TestMain(unittest.TestCase): + def setUp(self): + self.maxDiff = None + + def tearDown(self): + pass + def test_ml_validation_p(self) -> None: cred_sweeper = CredSweeper() self.assertEqual(ThresholdPreset.medium, cred_sweeper.ml_threshold) @@ -160,6 +166,7 @@ def test_main_path_p(self, mock_get_arguments) -> None: rule_path=None, jobs=1, ml_threshold=0.0, + ml_batch_size=1, depth=0, doc=False, severity="info", @@ -192,6 +199,7 @@ def test_binary_patch_p(self, mock_get_arguments) -> None: rule_path=None, jobs=1, ml_threshold=0.0, + ml_batch_size=1, depth=9, doc=False, severity="info", @@ -331,24 +339,14 @@ def test_scan_bytes_n(self) -> None: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - def test_scan_lines_p(self) -> None: - to_scan = ["password='in_line_2'"] + def test_string_content_provider_n(self) -> None: + random.seed(42) + ascii_chars = string.digits + string.ascii_letters + string.punctuation + ' ' + text = ''.join(random.choice(ascii_chars) for _ in range(1 << 20)) # 1Mb dummy text cred_sweeper = CredSweeper() - provider = StringContentProvider(to_scan) + provider = StringContentProvider([text]) results = cred_sweeper.file_scan(provider) - self.assertEqual(1, len(results)) - self.assertEqual("Password", results[0].rule_name) - self.assertEqual("password", results[0].line_data_list[0].variable) - self.assertEqual("in_line_2", results[0].line_data_list[0].value) - - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - - def test_scan_lines_n(self) -> None: - to_scan = [AZ_STRING] # not matched string - cred_sweeper = CredSweeper() - provider = StringContentProvider(to_scan) - results = cred_sweeper.file_scan(provider) - self.assertEqual(0, len(results)) + self.assertAlmostEqual(73, len(results), delta=37) # various lines may look like tokens # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -420,7 +418,7 @@ def test_tar_n(self) -> None: with patch('logging.Logger.error') as mocked_logger: cred_sweeper.run(content_provider=content_provider) self.assertEqual(0, len(cred_sweeper.credential_manager.get_credentials())) - mocked_logger.assert_called_with(f"{file_path}:unexpected end of data") + mocked_logger.assert_called_with(f"{file_path.as_posix()[:-4]}:unexpected end of data") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -486,10 +484,10 @@ def test_pdf_p(self) -> None: # may be tested with # https://www.dcc.edu/documents/administration/offices/information-technology/password-examples.pdf content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / "sample.pdf"]) - cred_sweeper = CredSweeper(depth=33) + cred_sweeper = CredSweeper(depth=7) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() - self.assertSetEqual({"AWS Client ID", "Password", "Github Classic Token"}, + self.assertSetEqual({"AWS Client ID", "Password", "Github Classic Token", "Key"}, set(i.rule_name for i in found_credentials)) self.assertSetEqual({"Xdj@jcN834b", "AKIAGIREOGIAWSKEY123", "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"}, set(i.line_data_list[0].value for i in found_credentials)) @@ -621,8 +619,10 @@ def test_html_p(self) -> None: "# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", "# 94 ya29.dshMb48ehfXwydAj34D32J", "# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", - "the line will be found twice # 100 EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", - "the line will be found twice # 100 EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "the line will be found twice # 100" + " EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", + "the line will be found twice # 100" + " EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", ] self.assertEqual(len(expected_credential_lines), len(found_credentials)) for cred in found_credentials: @@ -687,7 +687,7 @@ def test_doc_p(self) -> None: "508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0", "ya29.dshMb48ehfXwydAj34D32J", "dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b", - "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", + "EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD", "MU$T6Ef09#D!", } self.assertSetEqual(expected_credential_values, set(x.line_data_list[0].value for x in found_credentials)) @@ -712,7 +712,7 @@ def prepare(report: List[Dict[str, Any]]): # round ml_probability for macos ml_probability = x["ml_probability"] if isinstance(ml_probability, float): - x["ml_probability"] = round(ml_probability, 5) + x["ml_probability"] = round(ml_probability, 3) for y in x["line_data_list"]: # update windows style path y["path"] = str(y["path"]).replace('\\', '/') @@ -738,8 +738,6 @@ def prepare(report: List[Dict[str, Any]]): k["ml_probability"], )) - # do not use parametrised tests with unittests - self.maxDiff = 65536 # instead the config file is used with tempfile.TemporaryDirectory() as tmp_dir: for cfg in DATA_TEST_CFG: @@ -751,7 +749,7 @@ def prepare(report: List[Dict[str, Any]]): tmp_file = Path(tmp_dir) / cfg["json_filename"] # apply the current path to keep equivalence in path os.chdir(TESTS_PATH.parent) - content_provider: AbstractProvider = FilesProvider(["tests/samples"]) + content_provider: AbstractProvider = FilesProvider([Path("tests") / "samples"]) # replace output report file to place in tmp_dir cfg["json_filename"] = str(tmp_file) cred_sweeper = CredSweeper(**cfg) @@ -776,6 +774,9 @@ def prepare(report: List[Dict[str, Any]]): def test_param_n(self) -> None: # internal parametrized tests for quick debug - no itms should be found items = [ # + ("test.c", b" *keylen = X448_KEYLEN;"), + ("test.php", b"$yourls_user_passwords = $copy;"), + ("", b"passwords = List"), ("test.template", b" API_KEY_ID=00209332 "), # ("test.template", b" AUTH_API_KEY_NAME='temporally_secret_api' "), # ("pager.ts", b"pagerLimitKey: 'size',"), # @@ -785,20 +786,30 @@ def test_param_n(self) -> None: ("pager.rs", b"token: impl AsRef,"), # ("pager.rs", b" let tokens = quote::quote! {"), # ("pager.rs", b" let cert_chain = x509_rx"), # + ("my.kt", b'val password: String? = null'), # ] content_provider: AbstractProvider = FilesProvider([(file_name, io.BytesIO(data_line)) for file_name, data_line in items]) cred_sweeper = CredSweeper() cred_sweeper.run(content_provider=content_provider) creds = cred_sweeper.credential_manager.get_credentials() - self.assertFalse(len(creds), [x for x in creds]) + self.assertFalse(len(creds), [x.to_json() for x in creds]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def test_param_p(self) -> None: # internal parametrized tests for quick debug items = [ # - ("prod.py", b"secret_api_key='Ah\\tga%$FiQ@Ei8'", "secret_api_key", "Ah\\tga%$FiQ@Ei8"), # + ("slt.py", b'\\t\\tsalt = "\\x187bhgerjhqw\\n iKa\\tW_R~0/8"', "salt", "\\x187bhgerjhqw\\n iKa\\tW_R~0/8"), + ("log.txt", + b'json\\nAuthorization: Basic jfhlksadjiu9813ryiuhdfskadjlkjh34\\n\\u003c/code\\u003e\\u003c/pre\\u003e"', + "Authorization", "jfhlksadjiu9813ryiuhdfskadjlkjh34"), + ("pwd.py", b'password = "ji3_8iKgaW_R~0/8"', "password", "ji3_8iKgaW_R~0/8"), + ("pwd.py", b'password = "/_tcTz None: ("accept.py", b"password='Ahga%$FiQ@Ei8'", "password", "Ahga%$FiQ@Ei8"), # ("test.template", b" NAMED_API_KEY=qii7t1m6423127xto389xc914l34451qz5135865564sg ", "NAMED_API_KEY", "qii7t1m6423127xto389xc914l34451qz5135865564sg"), # + ("my.kt", b'val password: String = "Ahga%$FiQ@Ei8"', "password", "Ahga%$FiQ@Ei8"), # ] for file_name, data_line, variable, value in items: content_provider: AbstractProvider = FilesProvider([ @@ -822,3 +834,16 @@ def test_param_p(self) -> None: self.assertEqual(value, creds[0].line_data_list[0].value) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + + def test_random_p(self) -> None: + # random generated value in well quoted value may be any (almost) + safe_chars = [x for x in string.digits + string.ascii_letters + string.punctuation if x not in "\\'\"`"] + value = ''.join(random.choice(safe_chars) for _ in range(16)) + line = f'password = "{value}"' + content_provider: AbstractProvider = FilesProvider([("cred.go", io.BytesIO(line.encode()))]) + cred_sweeper = CredSweeper(ml_threshold=0) + cred_sweeper.run(content_provider=content_provider) + creds = cred_sweeper.credential_manager.get_credentials() + self.assertEqual(1, len(creds), line) + self.assertEqual("password", creds[0].line_data_list[0].variable) + self.assertEqual(value, creds[0].line_data_list[0].value) diff --git a/tests/utils/test_util.py b/tests/utils/test_util.py index f0962387c..b2cf2cca0 100644 --- a/tests/utils/test_util.py +++ b/tests/utils/test_util.py @@ -10,7 +10,8 @@ from lxml.etree import XMLSyntaxError -from credsweeper.common.constants import Chars, DEFAULT_ENCODING, UTF_8 +from credsweeper.common.constants import Chars, DEFAULT_ENCODING, UTF_8, MAX_LINE_LENGTH, CHUNK_STEP_SIZE, CHUNK_SIZE, \ + OVERLAP_SIZE, LATIN_1, UTF_16 from credsweeper.utils import Util from tests import AZ_DATA, AZ_STRING, SAMPLES_PATH @@ -308,14 +309,19 @@ def test_is_elf_n(self): self.assertFalse(Util.is_elf(data)) def test_is_binary_p(self): - self.assertFalse(Util.is_elf(AZ_STRING.encode("utf_32"))) - self.assertFalse(Util.is_elf(AZ_STRING.encode("utf_32_le"))) - self.assertFalse(Util.is_elf(AZ_STRING.encode("utf_32_be"))) + self.assertTrue(Util.is_binary(b"\0\0\0\0")) + # unsupported encoding + self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_32"))) + self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_32_le"))) + self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_32_be"))) + # utf-16 is supported but must be decoded before Util.is_binary() + self.assertTrue(Util.is_binary(AZ_STRING.encode(UTF_16))) + self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_16_le"))) + self.assertTrue(Util.is_binary(AZ_STRING.encode("utf_16_be"))) def test_is_binary_n(self): - self.assertFalse(Util.is_elf(AZ_STRING.encode("utf_16"))) - self.assertFalse(Util.is_elf(AZ_STRING.encode("utf_16_le"))) - self.assertFalse(Util.is_elf(AZ_STRING.encode("utf_16_be"))) + self.assertFalse(Util.is_binary("Üben von Xylophon und Querflöte ist ja zweckmäßig".encode(LATIN_1))) + self.assertFalse(Util.is_binary(b"\x7Ffew unprintable letters\x00")) def test_is_ascii_entropy_validate_p(self): self.assertTrue(Util.is_ascii_entropy_validate(b'')) @@ -534,3 +540,78 @@ def test_decode_base64_n(self): Util.decode_base64("____") with self.assertRaises(binascii.Error): Util.decode_base64("----") + + def test_get_chunks_n(self): + self.assertGreater(MAX_LINE_LENGTH, CHUNK_SIZE) + self.assertGreater(CHUNK_SIZE, OVERLAP_SIZE) + self.assertGreater(CHUNK_STEP_SIZE, OVERLAP_SIZE) + # wrong cases which should not appear due line length is checked before + self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(0)) + self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(42)) + self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(CHUNK_STEP_SIZE)) + self.assertListEqual([(0, CHUNK_SIZE), (CHUNK_STEP_SIZE, CHUNK_SIZE)], Util.get_chunks(CHUNK_SIZE)) + self.assertListEqual([(0, CHUNK_SIZE), (CHUNK_STEP_SIZE, MAX_LINE_LENGTH)], Util.get_chunks(MAX_LINE_LENGTH)) + with self.assertRaises(Exception): + Util.get_chunks(None) + + def test_get_chunks_p(self): + line_length = 42 + MAX_LINE_LENGTH + self.assertListEqual( # + [ # + (0, CHUNK_SIZE), # + (CHUNK_STEP_SIZE, line_length), # + ], # + Util.get_chunks(line_length)) + line_length = 2 * MAX_LINE_LENGTH + self.assertListEqual( # + [ # + (0, CHUNK_SIZE), # + (1 * CHUNK_STEP_SIZE, CHUNK_SIZE + CHUNK_STEP_SIZE), # + (2 * CHUNK_STEP_SIZE, CHUNK_SIZE + 2 * CHUNK_STEP_SIZE), # + (3 * CHUNK_STEP_SIZE, line_length), # + ], # + Util.get_chunks(line_length)) + line_length = 3 * MAX_LINE_LENGTH + 42 + self.assertListEqual( # + [ # + (0, CHUNK_SIZE), # + (1 * CHUNK_STEP_SIZE, CHUNK_SIZE + CHUNK_STEP_SIZE), # + (2 * CHUNK_STEP_SIZE, CHUNK_SIZE + 2 * CHUNK_STEP_SIZE), # + (3 * CHUNK_STEP_SIZE, CHUNK_SIZE + 3 * CHUNK_STEP_SIZE), # + (4 * CHUNK_STEP_SIZE, CHUNK_SIZE + 4 * CHUNK_STEP_SIZE), # + (5 * CHUNK_STEP_SIZE, CHUNK_SIZE + 5 * CHUNK_STEP_SIZE), # + (6 * CHUNK_STEP_SIZE, line_length), # + ], # + Util.get_chunks(line_length)) + + def test_get_chunks_coverage_p(self): + line_len = MAX_LINE_LENGTH + while 7 * MAX_LINE_LENGTH > line_len: + line_len += random.randint(1, OVERLAP_SIZE) + data = bytearray(line_len) + chunks = Util.get_chunks(line_len) + for start, end in chunks: + for i in range(start, end): + data[i] += 1 + self.assertNotIn(0, data) + # overlapped items should be passed not more than twice + self.assertGreaterEqual(2, max(data)) + + def test_subtext_n(self): + self.assertEqual("", Util.subtext("", 0, 0)) + self.assertEqual("", Util.subtext(' ' * 42, 0, 0)) + + def test_subtext_p(self): + self.assertEqual("var=value0123456789;", Util.subtext(" var=value0123456789; ", 21, 10)) + self.assertEqual(AZ_STRING, Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 1 + len(AZ_STRING) >> 1)) + self.assertEqual("x jump", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 3)) + self.assertEqual("ox jumps", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 4)) + self.assertEqual("fox jumps", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 5)) + self.assertEqual("fox jumps ov", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 6)) + self.assertEqual("The quick", Util.subtext(AZ_STRING, 0, 5)) + self.assertEqual("The quick", Util.subtext(AZ_STRING, 3, 5)) + self.assertEqual("fox jumps", Util.subtext(AZ_STRING, AZ_STRING.find("jumps"), 5)) + self.assertEqual("e lazy dog", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 5)) + self.assertEqual("the lazy dog", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 6)) + self.assertEqual(AZ_STRING[:39], Util.subtext(AZ_STRING, 15, 20)) + self.assertEqual(AZ_STRING[-40:], Util.subtext(AZ_STRING, 33, 20))