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

  1. Retry with a longer deadline
  2. Confirm the server fully supports SMBv1 session setup
  3. 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.