{ "version": 3, "sources": ["../../../../../../../../source/febe/ui/src/scripts/report_modules/helpers.ts", "../../../../../../../../source/febe/ui/src/scripts/report_modules/signatures.ts"], "sourcesContent": ["import { Process, NetworkFlow } from \"./interfaces\";\n\nconst procLabels = {};\nif (globalThis.page_data.task_report.processes && globalThis.page_data.task_report.processes.length) {\n globalThis.page_data.task_report.processes.forEach((process: Process) => {\n let name = process.image ? process.image.split(\"\\\\\").pop() : \"\";\n if (name.toLowerCase() == \"svchost.exe\") {\n const parts = process.cmd.split(\" \");\n for (let i = 1; i < parts.length; i++) {\n if (parts[i - 1] == \"-k\" || parts[i - 1] == \"-s\") {\n name = parts[i];\n }\n }\n }\n procLabels[process.procid] = {\n pid: process.pid,\n name: name,\n };\n });\n}\n\nglobalThis.reportHelpers = {\n getProcessLabel: (procid: number) => {\n let label = procLabels[procid];\n if (!label)\n label = {\n pid: \"?\",\n name: \"Process #\" + procid,\n };\n return label;\n },\n\n getFlow: (id: number) => {\n if (\n !globalThis.page_data ||\n !globalThis.page_data.task_report ||\n !globalThis.page_data.task_report.network ||\n !globalThis.page_data.task_report.network.flows\n ) {\n return null;\n }\n\n return globalThis.page_data.task_report.network.flows.find((flow: NetworkFlow) => {\n if (flow.id === id) {\n return flow;\n }\n });\n },\n};\n", "let signatureItems: NodeListOf;\nlet ttpItems: NodeListOf;\n\nif (document.querySelector(\"#signatures\")) {\n signatureItems = document.querySelector(\"#signatures\").querySelectorAll(\"li\");\n}\n\nif (document.querySelector(\"#ttp\")) {\n ttpItems = document.querySelectorAll(\"#ttp button\");\n}\n\nif (signatureItems && signatureItems.length) {\n signatureItems.forEach((item) => {\n const clickEl = item.querySelector(\".click\");\n if (!clickEl) {\n return;\n }\n clickEl.addEventListener(\"click\", () => {\n item.querySelector(\".fold\").classList.toggle(\"hidden\");\n });\n clickEl.querySelectorAll(\"a\").forEach((a) => {\n a.addEventListener(\"click\", (e) => e.stopPropagation());\n });\n });\n\n ttpItems.forEach((item) => {\n item.addEventListener(\"click\", () => {\n sortSignatures(item);\n });\n });\n}\n\nfunction sortSignatures(el: Element) {\n let sort = [];\n if (el.classList.contains(\"primary\")) {\n el.classList.remove(\"primary\");\n el.classList.add(\"secondary\");\n } else {\n el.classList.add(\"primary\");\n el.classList.remove(\"secondary\");\n }\n\n document.querySelectorAll(\".primary[data-tactic-ttp]\").forEach((ttp) => {\n sort.push(ttp.getAttribute(\"data-tactic-ttp\"));\n });\n\n document.querySelectorAll(\"#signatures li\").forEach((signature) => {\n let ttps = signature.getAttribute(\"data-technique-ttp\")\n ? signature.getAttribute(\"data-technique-ttp\").split(\",\")\n : null;\n if (ttps) {\n const matches = ttps.filter((value) => sort.includes(value));\n if (matches && matches.length) {\n signature.classList.remove(\"hidden\");\n } else {\n signature.classList.add(\"hidden\");\n }\n } else {\n signature.classList.add(\"hidden\");\n }\n\n if (!document.querySelectorAll(\".secondary[data-tactic-ttp]\").length) {\n signature.classList.remove(\"hidden\");\n }\n });\n}\n"], "mappings": "AAEA,IAAMA,EAAa,CAAC,EAChB,WAAW,UAAU,YAAY,WAAa,WAAW,UAAU,YAAY,UAAU,QAC3F,WAAW,UAAU,YAAY,UAAU,QAASC,GAAqB,CACvE,IAAIC,EAAOD,EAAQ,MAAQA,EAAQ,MAAM,MAAM,IAAI,EAAE,IAAI,EAAI,GAC7D,GAAIC,EAAK,YAAY,GAAK,cAAe,CACvC,IAAMC,EAAQF,EAAQ,IAAI,MAAM,GAAG,EACnC,QAASG,EAAI,EAAGA,EAAID,EAAM,OAAQC,KAC5BD,EAAMC,EAAI,CAAC,GAAK,MAAQD,EAAMC,EAAI,CAAC,GAAK,QAC1CF,EAAOC,EAAMC,CAAC,EAGpB,CACAJ,EAAWC,EAAQ,MAAM,EAAI,CAC3B,IAAKA,EAAQ,IACb,KAAMC,CACR,CACF,CAAC,EAGH,WAAW,cAAgB,CACzB,gBAAkBG,GAAmB,CACnC,IAAIC,EAAQN,EAAWK,CAAM,EAC7B,OAAKC,IACHA,EAAQ,CACN,IAAK,IACL,KAAM,YAAcD,CACtB,GACKC,CACT,EAEA,QAAUC,GAEN,CAAC,WAAW,WACZ,CAAC,WAAW,UAAU,aACtB,CAAC,WAAW,UAAU,YAAY,SAClC,CAAC,WAAW,UAAU,YAAY,QAAQ,MAEnC,KAGF,WAAW,UAAU,YAAY,QAAQ,MAAM,KAAMC,GAAsB,CAChF,GAAIA,EAAK,KAAOD,EACd,OAAOC,CAEX,CAAC,CAEL,EChDA,IAAIC,EACAC,EAEA,SAAS,cAAc,aAAa,IACtCD,EAAiB,SAAS,cAA2B,aAAa,EAAE,iBAAiB,IAAI,GAGvF,SAAS,cAAc,MAAM,IAC/BC,EAAW,SAAS,iBAAiB,aAAa,GAGhDD,GAAkBA,EAAe,SACnCA,EAAe,QAASE,GAAS,CAC/B,IAAMC,EAAUD,EAAK,cAAc,QAAQ,EACtCC,IAGLA,EAAQ,iBAAiB,QAAS,IAAM,CACtCD,EAAK,cAAc,OAAO,EAAE,UAAU,OAAO,QAAQ,CACvD,CAAC,EACDC,EAAQ,iBAAiB,GAAG,EAAE,QAAS,GAAM,CAC3C,EAAE,iBAAiB,QAAUC,GAAMA,EAAE,gBAAgB,CAAC,CACxD,CAAC,EACH,CAAC,EAEDH,EAAS,QAASC,GAAS,CACzBA,EAAK,iBAAiB,QAAS,IAAM,CACnCG,EAAeH,CAAI,CACrB,CAAC,CACH,CAAC,GAGH,SAASG,EAAeC,EAAa,CACnC,IAAIC,EAAO,CAAC,EACRD,EAAG,UAAU,SAAS,SAAS,GACjCA,EAAG,UAAU,OAAO,SAAS,EAC7BA,EAAG,UAAU,IAAI,WAAW,IAE5BA,EAAG,UAAU,IAAI,SAAS,EAC1BA,EAAG,UAAU,OAAO,WAAW,GAGjC,SAAS,iBAAiB,2BAA2B,EAAE,QAASE,GAAQ,CACtED,EAAK,KAAKC,EAAI,aAAa,iBAAiB,CAAC,CAC/C,CAAC,EAED,SAAS,iBAAiB,gBAAgB,EAAE,QAASC,GAAc,CACjE,IAAIC,EAAOD,EAAU,aAAa,oBAAoB,EAClDA,EAAU,aAAa,oBAAoB,EAAE,MAAM,GAAG,EACtD,KACJ,GAAIC,EAAM,CACR,IAAMC,EAAUD,EAAK,OAAQE,GAAUL,EAAK,SAASK,CAAK,CAAC,EACvDD,GAAWA,EAAQ,OACrBF,EAAU,UAAU,OAAO,QAAQ,EAEnCA,EAAU,UAAU,IAAI,QAAQ,CAEpC,MACEA,EAAU,UAAU,IAAI,QAAQ,EAG7B,SAAS,iBAAiB,6BAA6B,EAAE,QAC5DA,EAAU,UAAU,OAAO,QAAQ,CAEvC,CAAC,CACH", "names": ["procLabels", "process", "name", "parts", "i", "procid", "label", "id", "flow", "signatureItems", "ttpItems", "item", "clickEl", "e", "sortSignatures", "el", "sort", "ttp", "signature", "ttps", "matches", "value"] }