Bug 10938 - Curious. When offered a choice between NT LANMAN 1.0 and NT LM 0.12 Samba chooses NT LANMAN 1.0
Summary: Curious. When offered a choice between NT LANMAN 1.0 and NT LM 0.12 Samba cho...
Status: NEW
Alias: None
Product: Samba 4.1 and newer
Classification: Unclassified
Component: Other (show other bugs)
Version: 4.1.13
Hardware: All All
: P5 normal (vote)
Target Milestone: ---
Assignee: Andrew Bartlett
QA Contact: Samba QA Contact
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-11-15 03:01 UTC by Richard Sharpe
Modified: 2018-09-17 05:54 UTC (History)
0 users

See Also:


Attachments
Capture of smbclient to Samba 4.1.12 showing this. (4.68 KB, application/vnd.tcpdump.pcap)
2014-11-15 03:01 UTC, Richard Sharpe
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Richard Sharpe 2014-11-15 03:01:51 UTC
Created attachment 10434 [details]
Capture of smbclient to Samba 4.1.12 showing this.

Attached is a capture from smbclient on a Samba 4.1.12 system against the same system (on the loopback interface).

The NegProt Request offers a bunch of dialects, including NT LANMAN 1.0 and NT LM 0.12.

Samba selects NT LANMAN 1.0 rather than the NT LM 0.12 I would have expected.
Comment 1 Amit Kumar 2018-09-17 05:54:00 UTC
Hey Richard.
Smbclient sends List of dialects in favorite dialect at top & least fav at bottom in Negotiation_Protocol_request message.

SMB server sends highest dialect it supports from List.

From samba code
/* List of supported protocols, most desired first */
} supported_protocols[] = {
        {"SMB 2.???",               "SMB2_FF",  reply_smb20ff,  PROTOCOL_SMB2_10},
        {"SMB 2.002",               "SMB2_02",  reply_smb2002,  PROTOCOL_SMB2_02},
        {"NT LANMAN 1.0",           "NT1",      reply_nt1,      PROTOCOL_NT1},
        {"NT LM 0.12",              "NT1",      reply_nt1,      PROTOCOL_NT1},
        {"POSIX 2",                 "NT1",      reply_nt1,      PROTOCOL_NT1},
        {"LANMAN2.1",               "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
        {"LM1.2X002",               "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
        {"Samba",                   "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
        {"DOS LM1.2X002",           "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
        {"LANMAN1.0",               "LANMAN1",  reply_lanman1,  PROTOCOL_LANMAN1},
        {"MICROSOFT NETWORKS 3.0",  "LANMAN1",  reply_lanman1,  PROTOCOL_LANMAN1},
        {NULL,NULL,NULL,0},
};

So in this case, NT LANMAN 1.0 is higher wrt NT LM 0.12 and hence selected.