shadow1ng/fscan · error
smbv1_session_send_failed
Error message
smbv1_session_send_failed: %w
What it means
Guard in probeSMBv1: writing the Session Setup request packet over the SMBv1 connection failed after negotiate succeeded. The write error aborts SMBv1 information gathering (OS version, domain) for the target.
Solutions
- Retry the SMBv1 probe
- Verify the server still accepts SMBv1 (often disabled by hardening)
- Fall back to the SMBv2 probe path
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at plugins/services/smb_protocol.go:242 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/f58e76021095a4cf.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/services/smb_protocol.go:242
if err != nil {
session.LogDebug(i18n.Tr("smbv1_negotiate_read_failed", err))
}
// 检查是否支持SMBv1
if len(r1) > 0 {
return probeSMBv1(conn, target, timeout)
}
// SMBv2路径
return probeSMBv2(ctx, target, timeout, session)
}
// probeSMBv1 处理SMBv1协议信息收集
func probeSMBv1(conn net.Conn, target string, timeout time.Duration) (*SMBTarget, error) {
// 发送Session Setup请求
_, err := conn.Write(smbv1SessionSetupPacket)
if err != nil {
return nil, fmt.Errorf("%s: %w", i18n.GetText("smbv1_session_send_failed"), err)
}
ret, err := readSMBMessage(conn)
if err != nil || len(ret) < 47 {
return nil, fmt.Errorf("%s: %w", i18n.GetText("smbv1_session_read_failed"), err)
}
info := &SMBTarget{
Protocol: SMBProtocol1,
}
// 解析blob信息
blobLength := int(bytesToUint16(ret[43:45]))
blobCount := int(bytesToUint16(ret[45:47]))
gssNative := ret[47:]
gssLen := len(gssNative)
View on GitHub (pinned to 95cc12e753)