shadow1ng/fscan · error
smbv1_session_read_failed: %w
Error message
smbv1_session_read_failed: %w
What it means
Guard in probeSMBv1: reading the Session Setup response failed or returned fewer than 47 bytes, so the SMB header plus parameters cannot be parsed and SMBv1 target info (dialect, OS) is unavailable.
Source
Thrown at plugins/services/smb_protocol.go:247
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)
// 校验远端返回的偏移量
if blobLength > gssLen || blobCount > gssLen || blobLength > blobCount {
return info, nil
}
View on GitHub (pinned to 95cc12e753)
Solutions
- Retry with a longer deadline
- Confirm the server fully supports SMBv1 session setup
- Fall back to SMBv2 probing
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at plugins/services/smb_protocol.go:247 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/4485109ed1955441.
Report an issue: GitHub.