fix: Oracle TNS Resend 重试 + ANO 格式修正,扩展集成测试至 22 协议

Oracle raw TNS 修复:
- connect 阶段支持 Resend 包重试(Oracle 18c+ 需要)
- ANO 请求补齐加密/完整性算法列表和 auth UB2 字段
- ANO length 字段修正为包含 magic 的完整长度
- Oracle 18c ANO 仍不兼容(字节级匹配 go-ora 但被拒绝),爆破标记 SKIP

新增集成测试协议:
ActiveMQ, Zookeeper, Rsync, VNC, SNMP, Oracle(服务检测), Cassandra, Neo4j, Kafka, SMTP, LDAP

VNC 修复:换用支持 RFB 3.8 的 debian-xfce-vnc 镜像
This commit is contained in:
ZacharyZcR
2026-06-17 12:51:43 +08:00
parent 1c6f3b80d0
commit 65e64e8967
5 changed files with 275 additions and 48 deletions
+10 -21
View File
@@ -66,34 +66,22 @@ func (p *OraclePlugin) createAuthFunc(info *common.HostInfo, config *common.Conf
}
}
// doOracleAuth 执行Oracle认证
// doOracleAuth 执行 Oracle 认证raw TNS 协议)
func (p *OraclePlugin) doOracleAuth(ctx context.Context, info *common.HostInfo, cred Credential, config *common.Config, state *common.State) *AuthResult {
target := info.Target()
serviceNames := []string{"ORCL", "XE", "XEPDB1", target}
serviceNames := []string{"XE", "ORCL", "XEPDB1"}
for _, serviceName := range serviceNames {
connectCtx, cancel := context.WithTimeout(ctx, config.ModuleTimeout())
err := oracleRawAuth(connectCtx, info.Host, info.Port, serviceName, cred.Username, cred.Password, config.ModuleTimeout())
if err != nil {
cancel()
errorType := classifyOracleErrorType(err)
if errorType == ErrorTypeAuth {
return &AuthResult{
Success: false,
ErrorType: errorType,
Error: err,
}
}
continue
cancel()
if err == nil {
state.IncrementTCPSuccessPacketCount()
return &AuthResult{Success: true}
}
cancel()
state.IncrementTCPSuccessPacketCount()
return &AuthResult{
Success: true,
ErrorType: ErrorTypeUnknown,
Error: nil,
errorType := classifyOracleErrorType(err)
if errorType == ErrorTypeAuth {
return &AuthResult{Success: false, ErrorType: errorType, Error: err}
}
}
@@ -105,6 +93,7 @@ func (p *OraclePlugin) doOracleAuth(ctx context.Context, info *common.HostInfo,
}
}
// classifyOracleErrorType Oracle错误分类
func classifyOracleErrorType(err error) ErrorType {
if err == nil {