diff --git a/pkg/plugins/services/rtsp/rtsp.go b/pkg/plugins/services/rtsp/rtsp.go index 24945b8..d0607e9 100644 --- a/pkg/plugins/services/rtsp/rtsp.go +++ b/pkg/plugins/services/rtsp/rtsp.go @@ -83,28 +83,13 @@ func (p *RTSPPlugin) Run(conn net.Conn, timeout time.Duration, target plugins.Ta return nil, nil } if string(response[:RtspMagicHeaderLength]) == RtspMagicHeader { - cseqStart := strings.Index(response, RtspCseqHeader) - if cseqStart == -1 { - return nil, nil - } - - cseqValueStart := cseqStart + RtspCseqHeaderLength - if response[cseqValueStart:cseqValueStart+len(cseq)+RtspNewlineLength] != cseq+"\r\n" { - return nil, nil - } - + var serverinfo string serverStart := strings.Index(response, RtspServerHeader) - if serverStart == -1 { - return nil, nil + if serverStart != -1 { + serverValueStart := serverStart + RtspServerHeaderLength + serverValueEnd := strings.Index(response[serverValueStart:], "\r\n") + serverinfo = response[serverValueStart+2 : serverValueStart+serverValueEnd] } - - serverValueStart := serverStart + RtspServerHeaderLength - serverValueEnd := strings.Index(response[serverValueStart:], "\r\n") - if serverValueStart+serverValueEnd >= len(response) { - return nil, nil - } - - serverinfo := response[serverValueStart : serverValueStart+serverValueEnd] payload := plugins.ServiceRtsp{ ServerInfo: serverinfo, } diff --git a/pkg/plugins/services/snmp/snmp.go b/pkg/plugins/services/snmp/snmp.go index 90753a4..1326da4 100644 --- a/pkg/plugins/services/snmp/snmp.go +++ b/pkg/plugins/services/snmp/snmp.go @@ -64,8 +64,24 @@ func (f *SNMPPlugin) Run(conn net.Conn, timeout time.Duration, target plugins.Ta stringBegin := idx + InfoOffset if bytes.Contains(response, RequestID) { if stringBegin < len(response) { + stringEnd := len(response) + if bytes.Contains(response, []byte("\r\n")) { + stringEnd = bytes.Index(response, []byte("\r\n")) + } + //处理\x06\x01\x02\x01\x01\x01\x00\x04\x82\x00\xa1VRP Comware Platform Software, Software Version 5.20, Release 5303\r\nQuidway S3528P-EA\r\nCopyright (c) 1998-2008 Huawei Techno情况 + for i, c := range response[stringBegin:stringEnd] { + if c > 32 && c < 127 { // 判断字符是否可见 + stringBegin = stringBegin + i + break + } + } + //处理Linux FRR-CORE 5.14.0-70.13.1.el9_0.x86_64 #1 SMP PREEMPT Tue May 17 15:53:11 EDT 2022 x86_64:161情况 + serverInfo := string(response[stringBegin:stringEnd]) + if strings.Contains(serverInfo, "#") { + serverInfo = strings.Split(serverInfo, "#")[0] + } return plugins.CreateServiceFrom(target, plugins.ServiceSNMP{}, false, - string(response[stringBegin:]), plugins.UDP), nil + serverInfo, plugins.UDP), nil } return plugins.CreateServiceFrom(target, plugins.ServiceSNMP{}, false, "", plugins.UDP), nil }