shadow1ng/fscan · error

packet rate limited

Error message

packet rate limited

What it means

Sentinel error indicating the packet rate limit is exceeded; returned as a PacketLimitError with Sentinel=ErrPacketRateLimited where Limit is the allowed rate and Current the observed count. Fires when send frequency exceeds the configured rate cap, unlike ErrMaxPacketReached which is a total-count cap.

Source

Thrown at common/globals.go:92

	date    = "unknown"
)

func GetVersion() string { return version }

// 运行时数据已迁移到Config对象中,使用GetGlobalConfig()访问

// Shell状态已迁移到State对象中,使用GetGlobalState()访问

// POC配置、输出控制、发包控制、初始化已迁移到Config/State对象中

// =============================================================================
// 发包限制错误类型
// =============================================================================

// 哨兵错误 - 用于 errors.Is 判断
var (
	ErrMaxPacketReached  = errors.New("max packet count reached")
	ErrPacketRateLimited = errors.New("packet rate limited")
)

// PacketLimitError 发包限制错误(包含详情)
type PacketLimitError struct {
	Sentinel error // ErrMaxPacketReached 或 ErrPacketRateLimited
	Limit    int64
	Current  int64
}

func (e *PacketLimitError) Error() string {
	if e.Sentinel == ErrMaxPacketReached {
		return i18n.Tr("packet_limit_max_reached", e.Limit)
	}
	return i18n.Tr("packet_limit_rate_limited", e.Limit)
}

func (e *PacketLimitError) Unwrap() error {
	return e.Sentinel

View on GitHub (pinned to 95cc12e753)

Solutions

  1. Lower scan concurrency or increase the per-second packet rate allowance
  2. Add backoff/timing between bursts so Current stays under Limit
  3. Verify the rate limiter configuration on the Config object
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at common/globals.go:92 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06). Data as JSON: /api/errors/44d1af9ab6a92036. Report an issue: GitHub.