SYMBOL INDEX (235 symbols across 20 files) FILE: cmd/jshunter/main.go function main (line 5) | func main() { FILE: internal/jshunter/aws_pair.go constant awsService (line 26) | awsService = "sts" constant awsRegion (line 27) | awsRegion = "us-east-1" constant awsHost (line 28) | awsHost = "sts.amazonaws.com" type AWSPair (line 32) | type AWSPair struct function pairAWSCredentials (line 43) | func pairAWSCredentials() []AWSPair { function verifyAWSPair (line 84) | func verifyAWSPair(ctx context.Context, client *http.Client, p AWSPair) ... function awsDeriveSigningKey (line 169) | func awsDeriveSigningKey(secret, dateStr, region, service string) []byte { function sha256Hex (line 176) | func sha256Hex(b []byte) string { function hmacBytes (line 181) | func hmacBytes(key, msg []byte) []byte { function hmacHex (line 187) | func hmacHex(key, msg []byte) string { FILE: internal/jshunter/cache.go type cacheMeta (line 29) | type cacheMeta struct type DiskCache (line 39) | type DiskCache struct method keyFor (line 54) | func (c *DiskCache) keyFor(u string) string { method bodyPath (line 59) | func (c *DiskCache) bodyPath(u string) string { method metaPath (line 63) | func (c *DiskCache) metaPath(u string) string { method Lookup (line 69) | func (c *DiskCache) Lookup(u string) (body []byte, meta *cacheMeta, ok... method Store (line 93) | func (c *DiskCache) Store(u string, resp *http.Response, body []byte) ... method AttachConditional (line 128) | func (c *DiskCache) AttachConditional(req *http.Request) { function NewDiskCache (line 44) | func NewDiskCache(dir string) (*DiskCache, error) { FILE: internal/jshunter/concurrent_verify.go function VerifyAllConcurrent (line 19) | func VerifyAllConcurrent(findings []*Finding, client *http.Client, timeo... FILE: internal/jshunter/crawler.go constant defaultPerHostConcurrency (line 18) | defaultPerHostConcurrency = 4 constant defaultBreakerThreshold (line 19) | defaultBreakerThreshold = 5 constant defaultBreakerCooldown (line 20) | defaultBreakerCooldown = 30 * time.Second type hostController (line 26) | type hostController struct method host (line 54) | func (c *hostController) host(h string) *hostState { method acquire (line 68) | func (c *hostController) acquire(host string) (release func(), allowed... method recordOutcome (line 86) | func (c *hostController) recordOutcome(host string, status int, retryA... type hostState (line 32) | type hostState struct function getHostController (line 43) | func getHostController() *hostController { function parseRetryAfter (line 113) | func parseRetryAfter(h http.Header) time.Duration { function backoffWithJitter (line 133) | func backoffWithJitter(attempt int) time.Duration { function hostOf (line 146) | func hostOf(rawURL string) string { function describeBreaker (line 155) | func describeBreaker(host string) string { FILE: internal/jshunter/csp.go function ParseCSPOrigins (line 13) | func ParseCSPOrigins(policy string) []string { FILE: internal/jshunter/detection.go constant SchemaVersion (line 20) | SchemaVersion = 2 constant DefaultMinConfidence (line 21) | DefaultMinConfidence = 0.50 constant DefaultMaxBytes (line 22) | DefaultMaxBytes = 32 * 1024 * 1024 constant contextWindow (line 23) | contextWindow = 96 type Severity (line 26) | type Severity constant SevCritical (line 29) | SevCritical Severity = "critical" constant SevHigh (line 30) | SevHigh Severity = "high" constant SevMedium (line 31) | SevMedium Severity = "medium" constant SevLow (line 32) | SevLow Severity = "low" constant SevInfo (line 33) | SevInfo Severity = "info" type Rule (line 37) | type Rule struct type Location (line 58) | type Location struct type Finding (line 67) | type Finding struct function registerRules (line 158) | func registerRules() { function shannonEntropy (line 614) | func shannonEntropy(s string) float64 { function charClassDiversity (line 633) | func charClassDiversity(s string) int { function redactValue (line 665) | func redactValue(v string) string { function hashValue (line 679) | func hashValue(v string) string { function looksLikeFixture (line 685) | func looksLikeFixture(context string) bool { function hasContextKeyword (line 697) | func hasContextKeyword(context string, kws []string) bool { function isInVendorNoise (line 711) | func isInVendorNoise(v string) (bool, string) { function extractContextWindow (line 724) | func extractContextWindow(body string, start, end int) string { function scoreFinding (line 740) | func scoreFinding(rule *Rule, value, context, source string) (bool, floa... function recordFinding (line 849) | func recordFinding(f *Finding) *Finding { function flushFindings (line 881) | func flushFindings() []*Finding { function resetFindings (line 905) | func resetFindings() { function analyzeBody (line 915) | func analyzeBody(source string, body []byte, minConfidence float64) []*F... function positionAt (line 987) | func positionAt(s string, idx int) (line, col int) { function lineStartIndex (line 1006) | func lineStartIndex(s string, idx int) int { function lineEndIndex (line 1021) | func lineEndIndex(s string, idx int) int { function applyLegacyFPFilter (line 1039) | func applyLegacyFPFilter(name, value, body, source string, start, end in... function validateAWSAccessKeyID (line 1123) | func validateAWSAccessKeyID(v string) (bool, []string) { function validateAWSSecretKey (line 1146) | func validateAWSSecretKey(v string) (bool, []string) { function validateStripeKey (line 1161) | func validateStripeKey(v string) (bool, []string) { function validateGitHubToken (line 1189) | func validateGitHubToken(v string) (bool, []string) { function base62EncodeCRC32 (line 1212) | func base62EncodeCRC32(n uint32) string { function validateSlackToken (line 1230) | func validateSlackToken(v string) (bool, []string) { function validateTwilioSK (line 1250) | func validateTwilioSK(v string) (bool, []string) { function validateJWT (line 1269) | func validateJWT(v string) (bool, []string) { type SelfTestResult (line 1304) | type SelfTestResult struct function runSelfTest (line 1318) | func runSelfTest() []SelfTestResult { FILE: internal/jshunter/diff.go function DiffPrevious (line 18) | func DiffPrevious(path string) (map[string]bool, error) { FILE: internal/jshunter/har.go type harFile (line 15) | type harFile struct type harEntry (line 21) | type harEntry struct function IngestHAR (line 38) | func IngestHAR(path string, config *Config) (int, error) { function harBase64Decode (line 88) | func harBase64Decode(b []byte) ([]byte, error) { FILE: internal/jshunter/html_extract.go type HTMLArtifacts (line 16) | type HTMLArtifacts struct type InlineScript (line 23) | type InlineScript struct type ExternalJS (line 33) | type ExternalJS struct function ExtractFromHTML (line 44) | func ExtractFromHTML(body []byte) (*HTMLArtifacts, error) { function readUntilEndTag (line 119) | func readUntilEndTag(z *html.Tokenizer, tag string) (string, error) { function tagAttrs (line 137) | func tagAttrs(t html.Token) map[string]string { function hasAttr (line 145) | func hasAttr(t html.Token, name string) bool { function looksLikeHTML (line 157) | func looksLikeHTML(body []byte, contentType string) bool { FILE: internal/jshunter/ignore.go type IgnoreEntry (line 23) | type IgnoreEntry struct type IgnoreList (line 29) | type IgnoreList struct method ShouldIgnore (line 91) | func (il *IgnoreList) ShouldIgnore(f *Finding) bool { function LoadIgnoreFile (line 37) | func LoadIgnoreFile(path string) (*IgnoreList, error) { function parseIgnoreReader (line 52) | func parseIgnoreReader(r io.Reader) (*IgnoreList, error) { function globMatch (line 118) | func globMatch(pattern, s string) bool { FILE: internal/jshunter/jshunter.go type progressReader (line 261) | type progressReader struct method Read (line 269) | func (pr *progressReader) Read(p []byte) (int, error) { type flagList (line 283) | type flagList method String (line 285) | func (f *flagList) String() string { method Set (line 289) | func (f *flagList) Set(value string) error { type Config (line 295) | type Config struct function Run (line 375) | func Run() { function runRobotsCLI (line 904) | func runRobotsCLI(config *Config) { function collectHostsFromInput (line 937) | func collectHostsFromInput(config *Config) []string { function emitFinalOutput (line 979) | func emitFinalOutput(config *Config) { function runSelfTestCLI (line 1039) | func runSelfTestCLI() { function looksLikeHTMLContentType (line 1066) | func looksLikeHTMLContentType(ct string) bool { function scanHTMLArtifacts (line 1081) | func scanHTMLArtifacts(pageURL string, body []byte, config *Config) { function emitCSPOrigins (line 1111) | func emitCSPOrigins(source string, origins []string) { function validateTargetURL (line 1121) | func validateTargetURL(urlStr string, allowInternal bool) error { function displayAsciiArt (line 1149) | func displayAsciiArt() { function customHelp (line 1176) | func customHelp() { function processStdin (line 1265) | func processStdin(output, regex, cookies, proxy string, threads int) { function isInputFromStdin (line 1278) | func isInputFromStdin() bool { function isStdoutTTY (line 1290) | func isStdoutTTY() bool { function disableColors (line 1298) | func disableColors() { function processJSFile (line 1305) | func processJSFile(jsFile, regex string) { function processInputs (line 1314) | func processInputs(url, list, output, regex, cookie, proxy string, threa... function processInputsOld (line 1326) | func processInputsOld(url, list, output, regex, cookie, proxy string, th... function enqueueURLs (line 1406) | func enqueueURLs(url, list string, urlChannel chan<- string, regex strin... function enqueueFromFile (line 1417) | func enqueueFromFile(filename string, urlChannel chan<- string) error { function enqueueSingleURL (line 1431) | func enqueueSingleURL(url string, urlChannel chan<- string, regex string) { function enqueueFromStdin (line 1439) | func enqueueFromStdin(urlChannel chan<- string) { function isTLSCanceledError (line 1451) | func isTLSCanceledError(err error) bool { function isJavaScriptContentType (line 1466) | func isJavaScriptContentType(contentType string) bool { function isValidStatusCode (line 1496) | func isValidStatusCode(statusCode int) bool { function isNonJavaScriptContentType (line 1502) | func isNonJavaScriptContentType(contentType string) bool { function shouldProcessResponse (line 1576) | func shouldProcessResponse(resp *http.Response, urlStr string, config *C... function searchForSensitiveData (line 1606) | func searchForSensitiveData(urlStr, regex, cookie, proxyStr string, skip... function isUnwantedEmail (line 1744) | func isUnwantedEmail(email string) bool { function reportMatches (line 1781) | func reportMatches(source string, body []byte, regexPatterns map[string]... function getVersionStatus (line 1840) | func getVersionStatus() string { function updateTool (line 1876) | func updateTool() { function processJSFileForEndpoints (line 2058) | func processJSFileForEndpoints(jsFile, regex, output string) { function processInputsForEndpoints (line 2076) | func processInputsForEndpoints(url, list, output, regex, cookie, proxy s... function processInputsForEndpointsOld (line 2088) | func processInputsForEndpointsOld(url, list, output, regex, cookie, prox... function extractEndpointsFromFile (line 2141) | func extractEndpointsFromFile(filePath, regex string) []string { function extractEndpointsFromURL (line 2151) | func extractEndpointsFromURL(urlStr, regex, cookie, proxy string, skipTL... function extractEndpointsFromContent (line 2163) | func extractEndpointsFromContent(content, regex, targetDomain string) []... function cleanEndpoint (line 2292) | func cleanEndpoint(endpoint string) string { function isValidEndpoint (line 2318) | func isValidEndpoint(endpoint string) bool { function displayEndpoints (line 2443) | func displayEndpoints(endpoints []string, source string) { function writeEndpointsToFile (line 2452) | func writeEndpointsToFile(endpoints []string, outputFile, source string) { function contains (line 2470) | func contains(slice []string, item string) bool { function createHTTPClientWithConfig (line 2480) | func createHTTPClientWithConfig(config *Config) *http.Client { function makeRequestWithRetry (line 2557) | func makeRequestWithRetry(client *http.Client, req *http.Request, config... function searchForSensitiveDataWithConfig (line 2615) | func searchForSensitiveDataWithConfig(urlStr string, config *Config) (st... function stripJSComments (line 2800) | func stripJSComments(body []byte) []byte { function processJSAnalysis (line 2861) | func processJSAnalysis(body []byte, config *Config) []byte { function basicDeobfuscate (line 2891) | func basicDeobfuscate(content string) string { function extractSourceMap (line 2899) | func extractSourceMap(content string) string { function extractEvalContent (line 2909) | func extractEvalContent(content string) string { function isObfuscated (line 2921) | func isObfuscated(content string) bool { function extractURLParamsWithBaseURLs (line 2933) | func extractURLParamsWithBaseURLs(content, source string) []string { function groupParamsByContext (line 3460) | func groupParamsByContext(content string, paramSet map[string]bool) [][]... function cleanURL (line 3530) | func cleanURL(urlStr string) string { function isValidURL (line 3544) | func isValidURL(urlStr string) bool { function isPlaceholderURL (line 3579) | func isPlaceholderURL(urlStr string) bool { function isURLInComment (line 3606) | func isURLInComment(context, match string) bool { function isMatchInBase64DataURI (line 3649) | func isMatchInBase64DataURI(context, match string) bool { function isLikelyBase64MediaData (line 3697) | func isLikelyBase64MediaData(context, match string) bool { function looksLikeBase64 (line 3751) | func looksLikeBase64(s string) bool { function hasHighBase64Entropy (line 3771) | func hasHighBase64Entropy(s string) bool { function isPartOfLargerBase64String (line 3798) | func isPartOfLargerBase64String(context string, matchPos, matchLen int) ... function extractDomain (line 3820) | func extractDomain(urlStr string) string { function extractBaseDomain (line 3840) | func extractBaseDomain(domain string) string { function isSameBaseDomain (line 3872) | func isSameBaseDomain(domain1, domain2 string) bool { function isMatchInURL (line 3884) | func isMatchInURL(context, match, sourceDomain string) bool { function filterMatchesByDomain (line 3916) | func filterMatchesByDomain(matches []string, sourceURL string) []string { function reportMatchesWithConfig (line 3974) | func reportMatchesWithConfig(source string, body []byte, config *Config)... function outputJSON (line 4598) | func outputJSON(source string, matchesMap map[string][]string) { function outputCSV (line 4611) | func outputCSV(source string, matchesMap map[string][]string) { function outputBurp (line 4622) | func outputBurp(source string, matchesMap map[string][]string) { function processInputsWithConfig (line 4632) | func processInputsWithConfig(url string, config *Config) { function processInputsForEndpointsWithConfig (line 4721) | func processInputsForEndpointsWithConfig(url string, config *Config) { function processJSFileWithConfig (line 4769) | func processJSFileWithConfig(jsFile string, config *Config) { function processJSFileForEndpointsWithConfig (line 4837) | func processJSFileForEndpointsWithConfig(jsFile string, config *Config) { function extractEndpointsFromURLWithConfig (line 4856) | func extractEndpointsFromURLWithConfig(urlStr string, config *Config) []... function crawlAndProcessJS (line 4933) | func crawlAndProcessJS(initialURL string, config *Config, depth int, vis... FILE: internal/jshunter/ndjson.go function outputNDJSON (line 12) | func outputNDJSON() { FILE: internal/jshunter/robots.go type RobotsResult (line 24) | type RobotsResult struct function FetchRobots (line 36) | func FetchRobots(client *http.Client, baseURL string, ua string) (*Robot... function parseRobots (line 73) | func parseRobots(target, ua string, body []byte) *RobotsResult { FILE: internal/jshunter/rules_cli.go function runListRules (line 14) | func runListRules() { function runExplainRule (line 46) | func runExplainRule(id string) { function applyRuleSelection (line 106) | func applyRuleSelection(only, disable string) int { FILE: internal/jshunter/rules_loader.go type ExternalRule (line 16) | type ExternalRule struct function LoadRulesFile (line 41) | func LoadRulesFile(path string) (int, error) { function validateAndCompileExternalRules (line 70) | func validateAndCompileExternalRules(ext []ExternalRule) ([]Rule, error) { function normalizeSeverity (line 140) | func normalizeSeverity(s string) Severity { FILE: internal/jshunter/sarif.go type SARIFEnvelope (line 13) | type SARIFEnvelope struct type SARIFRun (line 19) | type SARIFRun struct type SARIFTool (line 24) | type SARIFTool struct type SARIFDriver (line 28) | type SARIFDriver struct type SARIFRule (line 35) | type SARIFRule struct type SARIFText (line 45) | type SARIFText struct type SARIFRuleConfiguration (line 49) | type SARIFRuleConfiguration struct type SARIFResult (line 53) | type SARIFResult struct type SARIFLocation (line 62) | type SARIFLocation struct type SARIFPhysicalLocation (line 66) | type SARIFPhysicalLocation struct type SARIFArtifactLocation (line 71) | type SARIFArtifactLocation struct type SARIFRegion (line 75) | type SARIFRegion struct function severityToSARIFLevel (line 83) | func severityToSARIFLevel(sev Severity) string { function ToSARIF (line 98) | func ToSARIF() *SARIFEnvelope { function outputSARIF (line 177) | func outputSARIF() { FILE: internal/jshunter/sourcemap.go type sourceMap (line 28) | type sourceMap struct function FetchAndScanSourceMap (line 47) | func FetchAndScanSourceMap(client *http.Client, baseURL string, body []b... function sourceLabel (line 93) | func sourceLabel(baseURL string, sm *sourceMap, idx int) string { function fetchSourceMapPayload (line 108) | func fetchSourceMapPayload(client *http.Client, baseURL, ref string, con... function decodeDataURI (line 157) | func decodeDataURI(uri string) ([]byte, error) { FILE: internal/jshunter/stats.go type Stats (line 16) | type Stats struct function initStats (line 45) | func initStats() *Stats { function newRunID (line 56) | func newRunID() string { function statInc (line 66) | func statInc(p *int64) { function statAdd (line 72) | func statAdd(p *int64, n int64) { function printStats (line 81) | func printStats(s *Stats) { FILE: internal/jshunter/verify.go type Verifier (line 17) | type Verifier type VerifyResult (line 20) | type VerifyResult struct function registerVerifiers (line 39) | func registerVerifiers() { type hostLimiter (line 82) | type hostLimiter struct method acquire (line 97) | func (h *hostLimiter) acquire(host string) func() { function newHostLimiter (line 89) | func newHostLimiter(per int, cooldown time.Duration) *hostLimiter { function runVerify (line 114) | func runVerify(ruleID, value string, client *http.Client, timeout time.D... function doVerifyRequest (line 128) | func doVerifyRequest(ctx context.Context, client *http.Client, req *http... function sanitizeNetErr (line 145) | func sanitizeNetErr(msg string) string { type capReader (line 157) | type capReader struct method Read (line 163) | func (c *capReader) Read(p []byte) (int, error) { function stripeVerify (line 177) | func stripeVerify(ctx context.Context, client *http.Client, value string... function githubVerify (line 201) | func githubVerify(ctx context.Context, client *http.Client, value string... function openaiVerify (line 231) | func openaiVerify(ctx context.Context, client *http.Client, value string... function anthropicVerify (line 254) | func anthropicVerify(ctx context.Context, client *http.Client, value str... function slackVerify (line 279) | func slackVerify(ctx context.Context, client *http.Client, value string)... function sendgridVerify (line 316) | func sendgridVerify(ctx context.Context, client *http.Client, value stri... function mailgunVerify (line 339) | func mailgunVerify(ctx context.Context, client *http.Client, value strin... function huggingfaceVerify (line 362) | func huggingfaceVerify(ctx context.Context, client *http.Client, value s...