Cybersecurity-Projects/PROJECTS/intermediate/credential-enumeration/src/runner.nim

57 lines
1.3 KiB
Nim

# ©AngelaMos | 2026
# runner.nim
{.push raises: [].}
import std/[monotimes, times]
import types
import config
import collectors/ssh
import collectors/git
import collectors/cloud
import collectors/browser
import collectors/history
import collectors/keyring
import collectors/apptoken
proc getCollector(cat: Category): CollectorProc =
case cat
of catBrowser: browser.collect
of catSsh: ssh.collect
of catCloud: cloud.collect
of catHistory: history.collect
of catKeyring: keyring.collect
of catGit: git.collect
of catApptoken: apptoken.collect
proc runCollectors*(config: HarvestConfig): Report =
let start = getMonoTime()
var results: seq[CollectorResult] = @[]
var moduleNames: seq[string] = @[]
for cat in config.enabledModules:
moduleNames.add(ModuleNames[cat])
let collector = getCollector(cat)
let res = collector(config)
results.add(res)
let elapsed = getMonoTime() - start
var summary: array[Severity, int]
for res in results:
for finding in res.findings:
inc summary[finding.severity]
result = Report(
metadata: ReportMetadata(
timestamp: "",
target: config.targetDir,
version: AppVersion,
durationMs: elapsed.inMilliseconds,
modules: moduleNames
),
results: results,
summary: summary
)