From 7bc477253653cce3ec05689548129ff28849d89d Mon Sep 17 00:00:00 2001 From: spiritlhl <103393591+spiritLHLS@users.noreply.github.com> Date: Tue, 21 May 2024 16:15:44 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DCMIN2=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {backtrace => back}/generate.go | 0 backtrace/asn.go | 24 +++++++++--------------- backtrace/backtrace.go | 31 +------------------------------ 3 files changed, 10 insertions(+), 45 deletions(-) rename {backtrace => back}/generate.go (100%) diff --git a/backtrace/generate.go b/back/generate.go similarity index 100% rename from backtrace/generate.go rename to back/generate.go diff --git a/backtrace/asn.go b/backtrace/asn.go index b141a95..da4fa03 100644 --- a/backtrace/asn.go +++ b/backtrace/asn.go @@ -2,9 +2,10 @@ package backtrace import ( "fmt" - . "github.com/oneclickvirt/backtrace/defaultset" "net" "strings" + + . "github.com/oneclickvirt/backtrace/defaultset" ) type Result struct { @@ -14,7 +15,7 @@ type Result struct { var ( ips = []string{ - // "219.141.136.12", "202.106.50.1", + // "219.141.136.12", "202.106.50.1", "219.141.140.10", "202.106.195.68", "221.179.155.161", "202.96.209.133", "210.22.97.1", "211.136.112.200", "58.60.188.222", "210.21.196.6", "120.196.165.24", @@ -53,7 +54,7 @@ func removeDuplicates(elements []string) []string { return result // 返回去重后的结果切片 } -func trace(ch chan Result, i int, cmin2 []string) { +func trace(ch chan Result, i int) { hops, err := Trace(net.ParseIP(ips[i])) if err != nil { s := fmt.Sprintf("%v %-15s %v", names[i], ips[i], err) @@ -63,7 +64,7 @@ func trace(ch chan Result, i int, cmin2 []string) { var asns []string for _, h := range hops { for _, n := range h.Nodes { - asn := ipAsn(n.IP.String(), cmin2) + asn := ipAsn(n.IP.String()) if asn != "" { asns = append(asns, asn) } @@ -132,7 +133,7 @@ func trace(ch chan Result, i int, cmin2 []string) { } } -func ipAsn(ip string, cmin2 []string) string { +func ipAsn(ip string) string { switch { case strings.HasPrefix(ip, "59.43"): return "AS4809" @@ -142,16 +143,9 @@ func ipAsn(ip string, cmin2 []string) string { return "AS9929" case strings.HasPrefix(ip, "219.158"): return "AS4837" - case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") || - strings.HasPrefix(ip, "223.120"): - for _, prefix := range cmin2 { - if strings.HasPrefix(ip, prefix) { - return "AS58807" - } - } - return "AS58453" - case strings.HasPrefix(ip, "103.11.109") || strings.HasPrefix(ip, "45.204.69") || - strings.HasPrefix(ip, "223.121"): + case strings.HasPrefix(ip, "223.120.19") || strings.HasPrefix(ip, "223.120.17") || strings.HasPrefix(ip, "223.120.16"): + return "AS58807" + case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") || strings.HasPrefix(ip, "223.120") || strings.HasPrefix(ip, "223.121"): return "AS58453" default: return "" diff --git a/backtrace/backtrace.go b/backtrace/backtrace.go index 27319d2..bd6e89f 100644 --- a/backtrace/backtrace.go +++ b/backtrace/backtrace.go @@ -22,36 +22,7 @@ func BackTrace() { s [12]string // 对应 ips 目标地址数量 c = make(chan Result) t = time.After(time.Second * 10) - cmin2 = []string{ - // 以下均为 /24 地址 - "223.118.32", - "223.119.32", "223.119.34", "223.119.35", "223.119.36", "223.119.37", "223.119.100", "223.119.253", - "223.120.165"} - // 其他区间的地址 - prefixes = []string{ - "223.119.8.0/21", - "223.120.128.0/17", - "223.120.134/23", - "223.120.136/23", - "223.120.138/23", - "223.120.154/23", - "223.120.158/23", - "223.120.164/22", - "223.120.168/22", - "223.120.172/22", - "223.120.174/23", - "223.120.184/22", - "223.120.188/22", - "223.120.192/23", - "223.120.200/23", - "223.120.210/23", - "223.120.212/23", - } ) - // 生成CMIN2的IPV4前缀地址 - for _, prefix := range prefixes { - cmin2 = append(cmin2, GeneratePrefixList(prefix)...) - } rsp, err := http.Get("http://ipinfo.io") if err != nil { fmt.Errorf("Get ip info err %v \n", err.Error()) @@ -66,7 +37,7 @@ func BackTrace() { } } for i := range ips { - go trace(c, i, cmin2) + go trace(c, i) } loop: for range s {