shadow1ng/fscan · error
smbv2_negotiate_read_failed: %w
Error message
smbv2_negotiate_read_failed: %w
What it means
Guard in probeSMBv2: reading the SMBv2 negotiate response failed (timeout/reset), so the dialect and capabilities offered by the server cannot be determined and SMBv2 probing aborts.
Source
Thrown at plugins/services/smb_protocol.go:309
// probeSMBv2 处理SMBv2协议信息收集
func probeSMBv2(ctx context.Context, target string, timeout time.Duration, session *common.ScanSession) (*SMBTarget, error) {
conn2, err := session.DialTCP(ctx, "tcp", target, timeout)
if err != nil {
return nil, fmt.Errorf(i18n.Tr("service_connection_failed", "%w"), err)
}
defer func() { _ = conn2.Close() }()
_ = conn2.SetDeadline(time.Now().Add(timeout))
// 发送SMBv2协商包
_, err = conn2.Write(smbv2NegotiatePacket)
if err != nil {
return nil, fmt.Errorf("%s: %w", i18n.GetText("smbv2_negotiate_send_failed"), err)
}
r2, err := readSMBMessage(conn2)
if err != nil {
return nil, fmt.Errorf("%s: %w", i18n.GetText("smbv2_negotiate_read_failed"), err)
}
// 构建NTLM数据包
var ntlmData []byte
if len(r2) > 70 && hex.EncodeToString(r2[70:71]) == "03" {
flags := []byte{0x15, 0x82, 0x08, 0xa0}
ntlmData = buildNTLMSSPData(flags)
} else {
flags := []byte{0x05, 0x80, 0x08, 0xa0}
ntlmData = buildNTLMSSPData(flags)
}
// 发送Session Setup
_, err = conn2.Write(smbv2SessionSetupPacket)
if err != nil {
return nil, fmt.Errorf("%s: %w", i18n.GetText("smbv2_session_send_failed"), err)
}
View on GitHub (pinned to 95cc12e753)
Solutions
- Retry with an increased deadline
- Verify the target speaks SMBv2 on the port
- Check network stability to the host
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at plugins/services/smb_protocol.go:309 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/b7012cdf8b713682.
Report an issue: GitHub.