NetBIOS Name Syntax

Christopher R. Hertel crh at
Wed Jan 3 18:14:07 GMT 2001

Following up on a recent thread...

Richard Sharpe paraphrased the old IBM documentation regarding the syntax 
of NetBIOS names:

<quote verbatim="not quite">
NetBIOS names are always converted to uppercase when sent to other
systems, and may consist of any character, except: 
  - Any character less than a space (0x20)
  - the characters " . / \ [ ] : | < > + = ; ,

I tried the following two tests:

1) On a W/95 box I ran nbtstat and tried feeding it all sorts of garbage 
   names.  As long as DOS could handle the characters (within quotes), 
   nbtstat happily generated queries from strings such as:

   C:\> nbtstat -a "[*	Goob+]"

   where the blank space after the asterisk is a tab character, 0x09.


2) I went to ControlPanel-->Network-->Identification and tried simply 
   adding a plus sign ('+') to the machine name.  I got a requestor 
   stating that the only legal characters are:

          '!' == 0x21                 '-' == 0x2D
          '#' == 0x23                 '.' == 0x2E
          '$' == 0x24                 '@' == 0x40
          '%' == 0x25                 '^' == 0x5E
          '&' == 0x26                 '_' == 0x5F
          '\'' == 0x27 (single quote) '{' == 0x7B
          '(' == 0x28                 '}' == 0x7D
          ')' == 0x29                 '~' == 0x7E
          Alpha-numeric characters.

   This is close to IBMs original sytax, if you assume that IBM disallowed
   any character above 126 (0x7E).  Microsoft allows the dot, while IBM
   didn't.  The characters '*', '?', and '`' are not in MS' allowed set,
   but are not disallowed by IBM.  The '*', of course, cannot be the first
   character of the name, and Windows/95's requestor states that the name
   may not be made up entirely of dots.  Finally, the requestor doesn't 
   seem to show the space character in the list, but I was able to change 
   my machine's name from "Zathras" to "Zath Ras" without complaint. 

Point is, it is the applications, not the NBT transport, that care about
name syntax.  From my testing, it seems that Microsoft compares the
encoded NBT names rather than wasting cycles by decoding the names and
comparing them that way.  The encoded form is made up of characters in the
range A..P, and can encode any octal value. 

Samba does decode before comparing.  In a sense, this makes Samba more
robust as it can do a case-insensitive compare and account for
implementations that don't handle names properly.  I don't imagine any
such implementations exist, however, since they would not work with

Chris -)-----

More information about the samba-technical mailing list