Update scan.go

This commit is contained in:
公明 2025-04-25 11:23:59 +08:00 committed by GitHub
parent ed2513648f
commit 618c1edb37
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

40
scan.go
View File

@ -199,30 +199,34 @@ func sendHTTPAndKimi(r *RequestResponseLog) (result, reqA, reqB, respA, respB st
if len(resp1+resp2) < 65535 { if len(resp1+resp2) < 65535 {
if !MatchString(config.GetConfig().RespBodyBWhiteList, resp2) { if !MatchString(config.GetConfig().RespBodyBWhiteList, resp2) {
// 初始值 similarity := StringSimilarity(resp1, resp2)
var resultDetect string if similarity > 0.5 {
var detectErr error // 初始值
maxRetries := 5 var resultDetect string
for i := 0; i < maxRetries; i++ { var detectErr error
resultDetect, detectErr = detectPrivilegeEscalation(config.GetConfig().AI, req1, resp1, resp2, resp.Status) maxRetries := 5
if detectErr == nil { for i := 0; i < maxRetries; i++ {
break // 成功退出循环 resultDetect, detectErr = detectPrivilegeEscalation(config.GetConfig().AI, req1, resp1, resp2, resp.Status)
if detectErr == nil {
break // 成功退出循环
}
// 可选:增加延迟避免频繁请求
fmt.Println("AI分析异常重试中异常原因", detectErr)
time.Sleep(5 * time.Second) // 1秒延迟
} }
// 可选:增加延迟避免频繁请求
fmt.Println("AI分析异常重试中异常原因", detectErr)
time.Sleep(5 * time.Second) // 1秒延迟
}
if detectErr != nil { if detectErr != nil {
fmt.Println("Error after retries:", detectErr) fmt.Println("Error after retries:", detectErr)
return "", "", "", "", "", detectErr return "", "", "", "", "", detectErr
} }
return resultDetect, req1, req2, resp1, resp2, nil return resultDetect, req1, req2, resp1, resp2, nil
} else {
return `{"res": "false", "reason": "相似度小于0.5(` + fmt.Sprint(similarity) + `)判断为未越权未消耗AI tokens","confidence":"100%"}`, req1, req2, resp1, resp2, nil
}
} else { } else {
return `{"res": "false", "reason": "匹配到关键字判断为无越权未消耗AI tokens","confidence":"100%"}`, req1, req2, resp1, resp2, nil return `{"res": "false", "reason": "匹配到关键字判断为无越权未消耗AI tokens","confidence":"100%"}`, req1, req2, resp1, resp2, nil
} }
} else { } else {
return `{"res": "white", "reason": "请求包太大","confidence":"100%"}`, req1, req2, resp1, resp2, nil return `{"res": "white", "reason": "请求包太大","confidence":"100%"}`, req1, req2, resp1, resp2, nil
} }