Skip to content

Commit

Permalink
优化fingerScan性能
Browse files Browse the repository at this point in the history
  • Loading branch information
M09Ic committed Dec 2, 2022
1 parent be63341 commit decc030
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 23 deletions.
16 changes: 6 additions & 10 deletions v2/internal/plugin/fingerScan.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@ func fingerScan(result *Result) {

func getFramework(result *Result, fingermap fingers.FingerMapper, matcher func(*Result, *fingers.Finger) (*parsers.Framework, *parsers.Vuln)) {
// 优先匹配默认端口,第一次循环只匹配默认端口
var alreadyFrameworks fingers.Fingers
for _, finger := range fingermap.GetFingers(result.Port) {
var alreadyFrameworks = make(map[string]bool)
for _, finger := range fingermap[result.Port] {
frame, vuln := matcher(result, finger)
alreadyFrameworks = append(alreadyFrameworks, finger)
alreadyFrameworks[result.Port] = true
if frame != nil {
if vuln != nil {
result.AddVuln(vuln)
Expand All @@ -70,16 +70,12 @@ func getFramework(result *Result, fingermap fingers.FingerMapper, matcher func(*
}

for port, fs := range fingermap {
if port == result.Port {
// 跳过已经扫过的默认端口
if _, ok := alreadyFrameworks[port]; ok {
continue
} else {
alreadyFrameworks[port] = true
}
for _, finger := range fs {
if alreadyFrameworks.Contain(finger) {
continue
} else {
alreadyFrameworks = append(alreadyFrameworks, finger)
}
frame, vuln := matcher(result, finger)
if frame != nil {
result.AddFramework(frame)
Expand Down
13 changes: 0 additions & 13 deletions v2/pkg/fingers/fingers.go
Original file line number Diff line number Diff line change
Expand Up @@ -304,21 +304,8 @@ func (d senddata) IsNull() bool {

type FingerMapper map[string][]*Finger

func (fm FingerMapper) GetFingers(port string) []*Finger {
return fm[port]
}

type Fingers []*Finger

func (fs Fingers) Contain(f *Finger) bool {
for _, finger := range fs {
if f == finger {
return true
}
}
return false
}

func (fs Fingers) GroupByPort() FingerMapper {
fingermap := make(FingerMapper)
for _, f := range fs {
Expand Down

0 comments on commit decc030

Please sign in to comment.