ya-express-ntlm
Version:
59 lines • 2.69 kB
JavaScript
;
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