UNPKG

ya-express-ntlm

Version:
59 lines 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NTLMType3Parser = void 0; const AbstractParser_1 = require("./AbstractParser"); const parser_interfaces_1 = require("./parser-interfaces"); const parser_utils_1 = require("./parser-utils"); const flags_1 = require("./flags"); class NTLMType3Parser extends AbstractParser_1.AbstractParser { constructor(buffer) { super(buffer); } parse() { const lmResponse = (0, parser_utils_1.getSecBuf)(this.buffer, 12); const ntlmResponse = (0, parser_utils_1.getSecBuf)(this.buffer, 20); const targetName = (0, parser_utils_1.getSecBuf)(this.buffer, 28); const userName = (0, parser_utils_1.getSecBuf)(this.buffer, 36); const workstationName = (0, parser_utils_1.getSecBuf)(this.buffer, 44); const flag = new Uint32Array(this.buffer.slice(60, 64))[0]; const encoding = (0, parser_utils_1.getNtlmEncoding)(flag); const lmResponseData = (0, parser_utils_1.getNtLmResponseData)(this.buffer, lmResponse); const ntlmResponseData = (0, parser_utils_1.getNtLmResponseData)(this.buffer, ntlmResponse); const domain = (0, parser_utils_1.getSecBufData)(this.buffer, targetName, encoding); const username = (0, parser_utils_1.getSecBufData)(this.buffer, userName, encoding); const workstation = (0, parser_utils_1.getSecBufData)(this.buffer, workstationName, encoding); const result = { messageType: parser_interfaces_1.NTLMMessageType.AUTHENTICATE_MESSAGE, version: 1, domain, username, workstation, flags: undefined, sessionKey: undefined, lmResponse, ntlmResponse, targetName, userName, workstationName, lmResponseData, ntlmResponseData, }; const firstOffset = Math.min(...[lmResponse, ntlmResponse, targetName, userName, workstationName].map((s) => s.offset)); if (firstOffset !== 52) { // NTLM version 2 const r2 = result; r2.version = 2; r2.sessionKey = (0, parser_utils_1.getSecBuf)(this.buffer, 52); r2.flags = (0, parser_utils_1.getFlags)(flags_1.ntlmFlags, flag); if (firstOffset !== 64) { // NTLM version 3 const r3 = result; r3.version = 3; r3.osVersionStructure = (0, parser_utils_1.getOSVersionStructure)(this.buffer, 64); } } return result; } } exports.NTLMType3Parser = NTLMType3Parser; //# sourceMappingURL=NTLMType3Parser.js.map