LAN Manager is a discontinued network operating system (NOS) available from multiple vendors and developed by Microsoft in cooperation with 3Com Corporation. It was designed to succeed 3Com's 3+Share network server software which ran atop a heavily modified version of MS-DOS. The LAN Manager OS/2 operating system was co-developed by IBM and Microsoft, using the Server Message Block (SMB) protocol. It originally used SMB atop either the NetBIOS Frames (NBF) protocol or a specialized version of the Xerox Network Systems (XNS) protocol. These legacy protocols had been inherited from previous products such as MS-Net for MS-DOS, Xenix-NET for MS-Xenix, and the afore-mentioned 3+Share. A version of LAN Manager for Unix-based systems called LAN Manager/X was also available. LAN Manager/X was the basis for Digital Equipment Corporation's Pathworks product for OpenVMS, Ultrix and Tru64. In 1990, Microsoft announced LAN Manager 2.0 with a host of improvements, including support for TCP/IP as a transport protocol for SMB, using NetBIOS over TCP/IP (NBT). The last version of LAN Manager, 2.2, which included an MS-OS/2 1.31 base operating system, remained Microsoft's strategic server system until the release of Windows NT Advanced Server in 1993. 1987 – MS LAN Manager 1.0 (Basic/Enhanced) 1989 – MS LAN Manager 1.1 1991 – MS LAN Manager 2.0 1992 – MS LAN Manager 2.1 1992 – MS LAN Manager 2.1a 1993 – MS LAN Manager 2.2 1994 – MS LAN Manager 2.2a Many vendors shipped licensed versions, including: 3Com Corporation 3+Open HP LAN Manager/X IBM LAN Server Tapestry Torus The Santa Cruz Operation The LM hash is computed as follows: The user's password is restricted to a maximum of fourteen characters. The user’s password is converted to uppercase. The user's password is encoded in the System OEM code page. This password is NULL-padded to 14 bytes. The “fixed-length” password is split into two 7-byte halves. These values are used to create two DES keys, one from each 7-byte half, by converting the seven bytes into a bit stream with the most significant bit first, and inserting a parity bit after every seven bits (so 1010100 becomes 10101000).