mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-22 03:10:42 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -590,6 +590,18 @@ func TestParseIP_IPRange(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseIP_IPRangeLimit(t *testing.T) {
|
||||
result, err := parseIPRangeString("192.168.1.1-5", 3)
|
||||
if err != nil {
|
||||
t.Fatalf("parseIPRangeString error = %v", err)
|
||||
}
|
||||
|
||||
expected := []string{"192.168.1.1", "192.168.1.2", "192.168.1.3"}
|
||||
if !reflect.DeepEqual(result, expected) {
|
||||
t.Errorf("parseIPRangeString limit = %v, want %v", result, expected)
|
||||
}
|
||||
}
|
||||
|
||||
// TestParseIP_FromFile 测试从文件读取
|
||||
//
|
||||
// 验证:文件中的IP列表被正确读取
|
||||
@@ -969,6 +981,24 @@ func TestParseIP_FullIPRange(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseIP_FullIPRangeNoLimit(t *testing.T) {
|
||||
result, err := parseIPRangeString("192.168.1.1-192.168.1.5", -1)
|
||||
if err != nil {
|
||||
t.Fatalf("parseIPRangeString error = %v", err)
|
||||
}
|
||||
|
||||
expected := []string{
|
||||
"192.168.1.1",
|
||||
"192.168.1.2",
|
||||
"192.168.1.3",
|
||||
"192.168.1.4",
|
||||
"192.168.1.5",
|
||||
}
|
||||
if !reflect.DeepEqual(result, expected) {
|
||||
t.Errorf("parseIPRangeString no limit = %v, want %v", result, expected)
|
||||
}
|
||||
}
|
||||
|
||||
// TestParseIP_InvalidCIDR 测试无效CIDR
|
||||
func TestParseIP_InvalidCIDR(t *testing.T) {
|
||||
tests := []struct {
|
||||
@@ -1173,7 +1203,7 @@ test:
|
||||
{"admin", "password123"},
|
||||
{"root", "toor"},
|
||||
{"user", "pass:with:colons"}, // 密码可以包含冒号
|
||||
{"test", ""}, // 空密码
|
||||
{"test", ""}, // 空密码
|
||||
}
|
||||
|
||||
if len(result) != len(tests) {
|
||||
|
||||
@@ -302,7 +302,7 @@ func parseIPCIDR(cidr string, maxTargets int) ([]string, error) {
|
||||
for ipNet.Contains(ip) {
|
||||
ips = append(ips, ip.String())
|
||||
count++
|
||||
if count >= maxTargets {
|
||||
if maxTargets > 0 && count >= maxTargets {
|
||||
break
|
||||
}
|
||||
incrementIP(ip)
|
||||
@@ -346,7 +346,7 @@ func parseIPRangeString(rangeStr string, maxTargets int) ([]string, error) {
|
||||
|
||||
// 处理简写格式 (如: 192.168.1.1-100)
|
||||
if len(endIPStr) < 4 || !strings.Contains(endIPStr, ".") {
|
||||
return parseIPShortRange(startIPStr, endIPStr)
|
||||
return parseIPShortRange(startIPStr, endIPStr, maxTargets)
|
||||
}
|
||||
|
||||
// 处理完整格式 (如: 192.168.1.1-192.168.1.100)
|
||||
@@ -359,7 +359,7 @@ func parseIPRangeString(rangeStr string, maxTargets int) ([]string, error) {
|
||||
}
|
||||
|
||||
// parseIPShortRange 解析短格式IP范围
|
||||
func parseIPShortRange(startIPStr, endSuffix string) ([]string, error) {
|
||||
func parseIPShortRange(startIPStr, endSuffix string, maxTargets int) ([]string, error) {
|
||||
endNum, err := strconv.Atoi(endSuffix)
|
||||
if err != nil || endNum > 255 {
|
||||
return nil, fmt.Errorf("无效的IP范围结束值: %s", endSuffix)
|
||||
@@ -377,8 +377,13 @@ func parseIPShortRange(startIPStr, endSuffix string) ([]string, error) {
|
||||
}
|
||||
|
||||
var allIP []string
|
||||
count := 0
|
||||
for i := startNum; i <= endNum; i++ {
|
||||
allIP = append(allIP, fmt.Sprintf("%s.%d", prefixIP, i))
|
||||
count++
|
||||
if maxTargets > 0 && count >= maxTargets {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return allIP, nil
|
||||
@@ -408,7 +413,7 @@ func parseIPFullRange(startIP, endIP net.IP, maxTargets int) ([]string, error) {
|
||||
ips = append(ips, current.String())
|
||||
count++
|
||||
|
||||
if current.Equal(end4) || count >= maxTargets {
|
||||
if current.Equal(end4) || (maxTargets > 0 && count >= maxTargets) {
|
||||
break
|
||||
}
|
||||
incrementIP(current)
|
||||
|
||||
Reference in New Issue
Block a user