shadow1ng/fscan · error

netbios_no_name_records

Error message

netbios_no_name_records

What it means

Guard in parseNetBIOSNames: the response passed the minimum-length check but the name-record count byte (data[56]) is zero, so the server reported no NetBIOS names. There is no name data to extract and the info stays invalid.

Source

Thrown at plugins/services/netbios.go:272

	if err != nil {
		return nil, fmt.Errorf("%s: %w", i18n.GetText("netbios_smb_session_read_failed"), err)
	}

	return p.parseNetBIOSSession(response2[:n])
}

// parseNetBIOSNames 解析NetBIOS名称查询响应
func (p *NetBIOSPlugin) parseNetBIOSNames(data []byte) (*NetBIOSInfo, error) {
	info := &NetBIOSInfo{Valid: false}

	if len(data) < 57 {
		return info, fmt.Errorf("%s", i18n.GetText("netbios_response_too_short"))
	}

	// 获取名称记录数量
	numNames := int(data[56])
	if numNames == 0 {
		return info, fmt.Errorf("%s", i18n.GetText("netbios_no_name_records"))
	}

	nameData := data[57:]

	// 服务类型映射
	uniqueNames := map[byte]string{
		0x00: "WorkstationService",
		0x03: "Messenger Service",
		0x06: "RAS Server Service",
		0x1F: "NetDDE Service",
		0x20: "ServerService",
		0x21: "RAS Client Service",
		0x1D: "Master Browser",
		0x1B: "Domain Master Browser",
	}

	groupNames := map[byte]string{
		0x00: "DomainName",

View on GitHub (pinned to 95cc12e753)

Solutions

  1. Confirm the target exposes NetBIOS names (some hosts disable the service)
  2. Query via TCP 139 instead of UDP 137
  3. Check whether a firewall mangled the response
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at plugins/services/netbios.go:272 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/797eaabf1183be14. Report an issue: GitHub.