| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.createNTLMRequest = createNTLMRequest;
- const NTLMFlags = {
- NTLM_NegotiateUnicode: 0x00000001,
- NTLM_NegotiateOEM: 0x00000002,
- NTLM_RequestTarget: 0x00000004,
- NTLM_Unknown9: 0x00000008,
- NTLM_NegotiateSign: 0x00000010,
- NTLM_NegotiateSeal: 0x00000020,
- NTLM_NegotiateDatagram: 0x00000040,
- NTLM_NegotiateLanManagerKey: 0x00000080,
- NTLM_Unknown8: 0x00000100,
- NTLM_NegotiateNTLM: 0x00000200,
- NTLM_NegotiateNTOnly: 0x00000400,
- NTLM_Anonymous: 0x00000800,
- NTLM_NegotiateOemDomainSupplied: 0x00001000,
- NTLM_NegotiateOemWorkstationSupplied: 0x00002000,
- NTLM_Unknown6: 0x00004000,
- NTLM_NegotiateAlwaysSign: 0x00008000,
- NTLM_TargetTypeDomain: 0x00010000,
- NTLM_TargetTypeServer: 0x00020000,
- NTLM_TargetTypeShare: 0x00040000,
- NTLM_NegotiateExtendedSecurity: 0x00080000,
- NTLM_NegotiateIdentify: 0x00100000,
- NTLM_Unknown5: 0x00200000,
- NTLM_RequestNonNTSessionKey: 0x00400000,
- NTLM_NegotiateTargetInfo: 0x00800000,
- NTLM_Unknown4: 0x01000000,
- NTLM_NegotiateVersion: 0x02000000,
- NTLM_Unknown3: 0x04000000,
- NTLM_Unknown2: 0x08000000,
- NTLM_Unknown1: 0x10000000,
- NTLM_Negotiate128: 0x20000000,
- NTLM_NegotiateKeyExchange: 0x40000000,
- NTLM_Negotiate56: 0x80000000
- };
- function createNTLMRequest(options) {
- const domain = escape(options.domain.toUpperCase());
- const workstation = options.workstation ? escape(options.workstation.toUpperCase()) : '';
- let type1flags = NTLMFlags.NTLM_NegotiateUnicode + NTLMFlags.NTLM_NegotiateOEM + NTLMFlags.NTLM_RequestTarget + NTLMFlags.NTLM_NegotiateNTLM + NTLMFlags.NTLM_NegotiateOemDomainSupplied + NTLMFlags.NTLM_NegotiateOemWorkstationSupplied + NTLMFlags.NTLM_NegotiateAlwaysSign + NTLMFlags.NTLM_NegotiateVersion + NTLMFlags.NTLM_NegotiateExtendedSecurity + NTLMFlags.NTLM_Negotiate128 + NTLMFlags.NTLM_Negotiate56;
- if (workstation === '') {
- type1flags -= NTLMFlags.NTLM_NegotiateOemWorkstationSupplied;
- }
- const fixedData = Buffer.alloc(40);
- const buffers = [fixedData];
- let offset = 0;
- offset += fixedData.write('NTLMSSP', offset, 7, 'ascii');
- offset = fixedData.writeUInt8(0, offset);
- offset = fixedData.writeUInt32LE(1, offset);
- offset = fixedData.writeUInt32LE(type1flags, offset);
- offset = fixedData.writeUInt16LE(domain.length, offset);
- offset = fixedData.writeUInt16LE(domain.length, offset);
- offset = fixedData.writeUInt32LE(fixedData.length + workstation.length, offset);
- offset = fixedData.writeUInt16LE(workstation.length, offset);
- offset = fixedData.writeUInt16LE(workstation.length, offset);
- offset = fixedData.writeUInt32LE(fixedData.length, offset);
- offset = fixedData.writeUInt8(5, offset);
- offset = fixedData.writeUInt8(0, offset);
- offset = fixedData.writeUInt16LE(2195, offset);
- offset = fixedData.writeUInt8(0, offset);
- offset = fixedData.writeUInt8(0, offset);
- offset = fixedData.writeUInt8(0, offset);
- fixedData.writeUInt8(15, offset);
- buffers.push(Buffer.from(workstation, 'ascii'));
- buffers.push(Buffer.from(domain, 'ascii'));
- return Buffer.concat(buffers);
- }
|