shadow1ng/fscan · error

%s [unsupported_platform: %s]

Error message

%s [unsupported_platform: %s]

What it means

Returned by LDPreloadPlugin.Scan when runtime.GOOS is not linux: LD_PRELOAD persistence only applies to Linux, and the bracketed marker records the unsupported platform. The plugin aborts without side effects.

Source

Thrown at plugins/local/ldpreload.go:45

// NewLDPreloadPlugin 创建LD_PRELOAD持久化插件
func NewLDPreloadPlugin() *LDPreloadPlugin {
	return &LDPreloadPlugin{
		BasePlugin: plugins.NewBasePlugin("ldpreload"),
	}
}

// Scan 执行LD_PRELOAD持久化 - 直接实现
func (p *LDPreloadPlugin) Scan(ctx context.Context, info *common.HostInfo, session *common.ScanSession) *plugins.Result {
	config := session.Config
	var output strings.Builder

	if runtime.GOOS != "linux" {
		output.WriteString(i18n.GetText("ldpreload_linux_only") + "\n")
		return &plugins.Result{
			Success: false,
			Output:  output.String(),
			Error:   fmt.Errorf("%s", i18n.Tr("unsupported_platform", runtime.GOOS)),
		}
	}

	// 从config获取配置
	targetFile := config.PersistenceTargetFile
	if targetFile == "" {
		output.WriteString(i18n.GetText("persistence_file_required") + "\n")
		return &plugins.Result{
			Success: false,
			Output:  output.String(),
			Error:   fmt.Errorf("%s", i18n.GetText("target_file_not_specified")),
		}
	}

	// 检查目标文件是否存在
	if _, err := os.Stat(targetFile); os.IsNotExist(err) {
		output.WriteString(i18n.Tr("target_file_not_exist", targetFile) + "\n")
		return &plugins.Result{

View on GitHub (pinned to 95cc12e753)

Solutions

  1. Run the ldpreload plugin on a Linux target
  2. Use a platform-appropriate persistence plugin instead
  3. Skip persistence when the target OS is incompatible
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at plugins/local/ldpreload.go:45 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/2f8d78c2121b2d41. Report an issue: GitHub.