shadow1ng/fscan · error
Unable to create output file {{.Arg1}}: %w
Error message
Unable to create output file {{.Arg1}}: %w What it means
Raised in KeyloggerPlugin.checkOutputFilePermissions when os.OpenFile on the keystroke-log output path fails (permission denied, unwritable directory, or invalid path); the localized 'output_file_create_failed' message wraps the OS error.
Source
Thrown at plugins/local/keylogger.go:131
}
if err != nil {
return fmt.Errorf("%s: %w", i18n.GetText("keylogger_failed_plain"), err)
}
// 保存到文件
if err := p.saveKeysToFile(outputFile, session); err != nil {
session.LogError(i18n.Tr("keylogger_save_failed", err))
}
return nil
}
// checkOutputFilePermissions 检查输出文件权限
func (p *KeyloggerPlugin) checkOutputFilePermissions(outputFile string) error {
file, err := os.OpenFile(outputFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
if err != nil {
return fmt.Errorf("%s: %w", i18n.Tr("output_file_create_failed", outputFile), err)
}
_ = file.Close()
return nil
}
// checkPlatformRequirements 检查平台特定要求
func (p *KeyloggerPlugin) checkPlatformRequirements() error {
switch runtime.GOOS {
case "windows":
return p.checkWindowsRequirements()
case "linux":
return p.checkLinuxRequirements()
case "darwin":
return p.checkDarwinRequirements()
default:
return fmt.Errorf("%s", i18n.Tr("unsupported_platform", runtime.GOOS))
}
}View on GitHub (pinned to 95cc12e753)
Solutions
- Choose an output path in a writable directory
- Run with sufficient privileges to create the file (0600)
- Free the file if another process holds a lock on it
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at plugins/local/keylogger.go:131 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/e1181c14dbf3b2c4.
Report an issue: GitHub.