shadow1ng/fscan · error

smbv1_session_send_failed: %w

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.

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)

Solutions

  1. Retry the SMBv1 probe
  2. Verify the server still accepts SMBv1 (often disabled by hardening)
  3. 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.