{
  "ml": {
    "v": "7",
    "id": 163,
    "lvl": -1,
    "conf": 0,
    "prob": 0.000016609827071079053,
    "type": "ruby",
    "version": "v18.18",
    "analyzed_at": "2026-09-13T22:54:11Z"
  },
  "path": "lib/et_fake_ccd/service/sidam_app.rb",
  "raw": {
    "rev": "c7f7e",
    "files": [
      {
        "id": 163,
        "ctx": [
          {
            "b": "A+flkx(W=ccVTcovj8z5wPq\u003cbA+cvvyiarhcKK)9ADL#owGSviByeS*yH{\u003c.v}ml5z/6u1zE^/o3uxY$B.L(casy-xuUi.ZwNw}Swg}wlBzb35wPz%dv}v1{A+flkx(W=ccUmybw)]E^uT)ORfj]cyv}xf",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "z/Pu0wm5[*A=k#9xKL^?y?W^1c#{\u003cYB97\u00266wJy}{Bz\u003e@azyDYszWEQfarR^HarR^HarR^Hv@Dj3vqYP#jS(^Dmrz1cyH]\u003eywi8+sz/6u1zE+^?oMaMTzDg:?AZK+Zzddr)e[Pcxzc}40z/c$ze]UltvqQ6m3lQDlao",
            "ln": 379,
            "col": 19,
            "line": 15
          },
          {
            "b": "arR^HAXq6Ear\u003eucByw)1B0q-qzWEQfarR^HarR^HAXq0oBrCaj3lQDlarR^HarR^HaA}KwxKtv\u0026A:@V\u003euUam#z/Ph#vqYQ(x(mMiAX5tOByw/[iV{F9z!\u0026{4diJd",
            "ln": 706,
            "col": 5,
            "line": 25
          },
          {
            "b": "arUSzx)9{bwEn+!arR^Hay]4}az+$exjUQXx(mo#wPJ0gBp6ckarR^HarUzwjS]7UarR^HarR^HarR^Hb4j$\u003ewPI{1Bz\u003e@azx.a:iYYYKmQZ7zlT%T/iZE[gxJ5F.C4\u003eC$e[X:kwPzj3wNxO3wPzd1z!\u0026{4ed9HxarR^HarR^HarR\u003eHv@Dr$b03?\u003cvpKs2z/xo9x\u003eeu9A=kM7y?j-fz!%0aayPzmxM4{9Bzkrca$K6zarR^HarR^HarR^Jx\u003egN)z!\u0026[",
            "ln": 893,
            "col": 5,
            "line": 34
          },
          {
            "b": "x?@CnoI)PVlS##Xz^$Fmr-iWnhbnEhrae)Fge?jGmRb7+sXRs+iz0}ex\u003c1IZzB[OYx\u0026O$zC$}swx\u003eyi{wQc)YwjwN$sY!BqnOSfTs8go9wMRYhr^Eg\u003cry*)Yvkq1VwO#DywjpfEwo*:/nP4oTs.QC=nO}HNvolfCsU--/sU-0Xv[fNBqaCessYYAXoL)KFvPb\u003ctnO{{Kt1rx.r.b?@sU+8rvR]TFt0\u003e\u003etnOR((s.ZU+s:AT{oJk^:t10dFpdE)2o\u0026A-5o?d^2oJLb9pGfS7pGHmAo*?Yfo*ZQWo\u003e)9Mo)PI\u003cnOJx.v@jkEt3aHkpI+8^sU-D)t3brUv@ls7v}^VlvPU%rvL.?xt30NnoJUhrvol5QvR[OQoJJ@ZvR[\u003eUt3aJNt3avrsU-D)t3aJO",
            "ln": 1128,
            "col": 49,
            "line": 40
          },
          {
            "b": "arR^Har\u003e]CyH}x\u003cBA}?pb03?\u003cls\u003cOCwPw$C3lQDlarR^HarR^Har\u003exwAa%u7B6\u0026T0b03?\u003cgb}iMiu*0YarR^HarR^HarR^Hb4kC8uTX80xKt\u003e1yH}xciV]RTC$Jf/gbT8QszIRDx?Aexydrbxr7o#0f\u0026y?Gy?cZyr8[iOnk:L8f*NG?rZFSDr6+U1yEQS?y/jkjryPwQrz(p-ryR4eyJ@fyzFg.6nn}E3rZ}dtgFgLCf?9@#r:5Wrr-TiGmknHSr8[fzr8c\u003c%mOl/:y?NlKzCq#=ryPRZmkmXqryH[0x)jo3zankxzep)$yhW/@gfeZhghIbyx!:QrgF{eoszQS8m]\u0026+\u0026s8pYwrD7Sjydq9frD{]gze:n?m%5YHghGPZf\u003ce:3s8pPdfMp@kyH?f*rxk1%yIW3.yIOe]zeq\u003cvq-d#+m%EZbrB/fjrZ{h2mNy=?svb..ze-0BzamMqmn^8]szhURy/LZ\u0026mP1CumrzBoDpy}nf\u0026y}IyCwp*moiz^y*80.yGkQ?r:5H4yJ9@*m]BLif\u003cnu/m[N/hnjEq/zfPb+yGi8^f\u0026z7Or8ME(s9MD0rzthVy^{r-zBNMkyF45}mR1qHr-%YDyJJMJm}:.Zf\u003cmsDgep\u003eBr+LPAsvdajyH?DXs5IE+zer(Wydp\u003c0zG5VWs5}?1mR(mpgb%FXsA54JmkWLer7Zg=s2+IfrB/(tmlayGydqc1f\u0026-K2r-TJvgd\u003c#kzC\u003c[Kf\u0026Y@es8Z]frD}RCsw?{?mOmY5r+b0mmR24\u003cze-J:gF](afL0%Tm[LWty^Io0y\u0026ArRnn}7ef\u003etrk",
            "ln": 2699,
            "col": 8,
            "line": 41
          },
          {
            "b": "pKbo7sY!Nup/xtjnKWqDwjP3-vR{uEnP3jBa{]CnarR^HarV7tarR^HarR^Hn(FIXe[X:kwPzj3wHIpx3lQDlarR!rzE:7YarR^HarUiaw/$R}Byw)1B6\u0026%0B9hqv3lQDlarR^HazJ2ZaBsCrarR^HarR^HarR^Jx\u003eezGar\u0026Z3fG7{DvQZ{0wObH9g=vm2eN\u0026cFwb",
            "ln": 5882,
            "col": 3120,
            "line": 43
          },
          {
            "b": "B9hIvvqPN1iV]Rky\u0026r%0B0rdxarR^HarR^HarR^Hb4UR1x(1$Oar\u003eArwN)A5y\u0026r%0B3KwPvqfKgv@Dided9HxarR^HarR^HarR\u003epv@#BdwG\u003ceTBAhIned9HxarR^HarR^H",
            "ln": 6100,
            "col": 14,
            "line": 52
          }
        ],
        "mol": "H(Cm₃)Md",
        "pid": 20,
        "rel": "fetched",
        "sha": "c8aef22db087bef6882e03e7f2b512cf4e07e1108afd1172efa1fcc1a9dae5f4",
        "via": "https://rubygems.org/downloads/et_fake_ccd-1.1.11.gem",
        "path": "pkg:gem/et_fake_ccd@1.1.11!!data.tar.gz!!lib/et_fake_ccd/service/sidam_app.rb",
        "risk": 3,
        "size": 6937,
        "type": "ruby",
        "depth": 5,
        "facts": {
          "imp": [
            [
              "",
              "require"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "include"
            ],
            [
              "",
              "plugin"
            ],
            [
              "",
              "plugin"
            ],
            [
              "",
              "route"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "post"
            ],
            [
              "",
              "with_forced_error_handling"
            ],
            [
              "",
              "from_json"
            ],
            [
              "",
              "params"
            ],
            [
              "",
              "valid?"
            ],
            [
              "",
              "halt"
            ],
            [
              "",
              "render_error_for"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "get"
            ],
            [
              "",
              "with_forced_error_handling"
            ],
            [
              "",
              "generate_user_token"
            ],
            [
              "",
              "generate"
            ],
            [
              "",
              "generate"
            ],
            [
              "",
              "et_fake_ccd/auth_service"
            ],
            [
              "",
              "et_fake_ccd/commands"
            ],
            [
              "",
              "et_fake_ccd/forced_error_handling"
            ],
            [
              "",
              "json"
            ],
            [
              "",
              "roda"
            ]
          ],
          "mbr": [
            "JSON.generate",
            "command.valid?",
            "r.get",
            "r.halt",
            "r.is",
            "r.params",
            "r.post"
          ],
          "tgt": [
            "from_json",
            "generate",
            "generate_user_token",
            "get",
            "halt",
            "include",
            "is",
            "params",
            "plugin",
            "post",
            "render_error_for",
            "require",
            "route",
            "valid?",
            "with_forced_error_handling"
          ],
          "funcs": [
            [
              "logged_in_result",
              910
            ],
            [
              "details_result",
              5964
            ],
            [
              "render_error_for",
              6858
            ]
          ],
          "metrics": {
            "ast": {
              "max_depth": 25,
              "op.concat": 11,
              "call_count": 23,
              "node_count": 428,
              "member_count": 7,
              "max_array_len": 10,
              "member_depth_max": 2,
              "op_density.concat": 0.03
            },
            "file": {
              "size": 6937,
              "entropy": 5.72
            },
            "text": {
              "lines": 77,
              "top_char": 86,
              "max_ws_run": 1,
              "digit_ratio": 0.1,
              "space_count": 735,
              "char_entropy": 5.72,
              "unique_chars": 83,
              "top_char_null": 0,
              "lines_over_200": 2,
              "lines_over_500": 2,
              "string_density": 0.51,
              "top_char_ratio": 0.04,
              "avg_line_length": 89.09,
              "lines_over_1000": 2,
              "max_line_length": 3148,
              "empty_line_ratio": 0.06,
              "last_line_length": 3,
              "long_token_count": 2,
              "whitespace_ratio": 0.12,
              "identifier_density": 0.77,
              "line_length_stddev": 394.53,
              "encoded_string_ratio": 0.03,
              "normalized_string_count": 4.44,
              "repeated_char_sequences": 38,
              "suspicious_identifier_ratio": 0.07,
              "normalized_unique_identifiers": 4.79
            },
            "binds": {
              "count": 3
            },
            "binary": {
              "peak_region_bytes": 3072,
              "peak_region_entropy": 5.93
            },
            "source": {
              "class_count": 3,
              "function_count": 3
            },
            "imports": {
              "count": 5,
              "third_party_count": 5,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 5393,
              "count": 39,
              "very_long": 2,
              "avg_length": 138.28,
              "max_length": 3116,
              "avg_entropy": 3.21,
              "email_count": 1,
              "entropy_stddev": 0.96,
              "base64_candidates": 1,
              "high_entropy_count": 2
            },
            "functions": {
              "count": 6
            },
            "identifiers": {
              "count": 59,
              "unique": 30,
              "avg_length": 8.63,
              "max_length": 26,
              "min_length": 1,
              "avg_entropy": 2.45,
              "reuse_ratio": 0.51,
              "length_stddev": 5.9,
              "sequential_names": 2,
              "single_char_count": 2,
              "single_char_ratio": 0.07,
              "high_entropy_count": 3,
              "high_entropy_ratio": 0.1,
              "all_lowercase_ratio": 0.67,
              "all_uppercase_ratio": 0.03
            }
          }
        },
        "traits": [
          {
            "id": "micro-behaviors/communications/http/browser-automation::authentication-token-name-literal",
            "conf": 0.9,
            "crit": 3,
            "desc": "Authentication token name literal"
          },
          {
            "id": "micro-behaviors/communications/http/lib/netlib::http-get-symbol",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.5,
            "crit": 1,
            "desc": "Generic method symbol named get"
          },
          {
            "id": "micro-behaviors/communications/http/token-auth::access-token-field-source",
            "conf": 0.92,
            "crit": 3,
            "desc": "Access token field in source"
          },
          {
            "id": "micro-behaviors/communications/http/auth::token-object-field",
            "conf": 0.93,
            "crit": 3,
            "desc": "OAuth token object member"
          },
          {
            "id": "micro-behaviors/data/encode/payload::large-base64-string-literals",
            "atk": "T1140",
            "mbc": "C0043",
            "conf": 0.6,
            "crit": 3,
            "desc": "Very long base64 strings present"
          },
          {
            "id": "metadata/encoded-payload/base64",
            "conf": 0.9,
            "crit": 3,
            "desc": "Encoded content decoded: base64"
          }
        ]
      }
    ]
  }
}