ya-express-ntlm
Version:
82 lines • 3.56 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.startCoder = exports.ntlmParse = exports.compactParseResult = void 0;
const parser_interfaces_1 = require("./parser-interfaces");
const parser_utils_1 = require("./parser-utils");
const NTLMType1Parser_1 = require("./NTLMType1Parser");
const NTLMType2Parser_1 = require("./NTLMType2Parser");
const NTLMType3Parser_1 = require("./NTLMType3Parser");
const AbstractParser_1 = require("./AbstractParser");
const instantiateFromContent = (buffer) => {
const str = (0, parser_utils_1.toHex)(buffer);
const prefix = str.substring(0, 24);
if (prefix === '4e544c4d5353500001000000') {
return new NTLMType1Parser_1.NTLMType1Parser(buffer);
}
if (prefix === '4e544c4d5353500002000000') {
return new NTLMType2Parser_1.NTLMType2Parser(buffer);
}
if (prefix === '4e544c4d5353500003000000') {
return new NTLMType3Parser_1.NTLMType3Parser(buffer);
}
return new AbstractParser_1.AbstractParser(buffer);
};
const compactParseResult = (r) => {
if (r.osVersionStructure) {
const { minorVersion: m1, majorVersion: m2, buildNumber: m3, unknown: m4 } = r.osVersionStructure;
delete r.osVersionStructure;
r.osVersion = `${m1}.${m2}.${m3} ${m4}`;
}
if (r.messageType === parser_interfaces_1.NTLMMessageType.NEGOTIATE_MESSAGE) {
delete r.suppliedDomain;
delete r.suppliedWorkstation;
}
if (r.messageType === parser_interfaces_1.NTLMMessageType.CHALLENGE_MESSAGE) {
if (r.targetInfoData) {
r.targetInfoData = r.targetInfoData.map((v) => v.content).filter((v) => String(v).trim());
delete r.targetNameSecBuf;
delete r.targetInfoSecBuf;
}
}
if (r.messageType === parser_interfaces_1.NTLMMessageType.AUTHENTICATE_MESSAGE) {
['sessionKey', 'lmResponse', 'ntlmResponse', 'targetName', 'userName',
'workstationName', 'sessionKey', 'ntlmResponseData']
.forEach((p) => {
delete r[p];
});
}
};
exports.compactParseResult = compactParseResult;
const ntlmParse = (str, opts) => {
const defaultOptions = { encoding: 'base64' };
const { encoding, compact } = { ...defaultOptions, ...opts };
if (encoding === 'hex') {
str = Buffer.from(str, 'hex').toString('base64');
}
const buffer = (0, parser_utils_1.decode)(str);
const parser = instantiateFromContent(buffer);
const result = parser.parse();
if (compact) {
(0, exports.compactParseResult)(result);
}
return result;
};
exports.ntlmParse = ntlmParse;
var coder_1 = require("./coder/coder");
Object.defineProperty(exports, "startCoder", { enumerable: true, get: function () { return coder_1.startCoder; } });
__exportStar(require("./parser-interfaces"), exports);
//# sourceMappingURL=index.js.map