ya-express-ntlm
Version:
53 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decode = exports.getFlags = exports.toHex = exports.getNtLmResponseData = exports.getNtlmEncoding = exports.getSecBufData = exports.getOSVersionStructure = exports.getSecBuf = void 0;
function getSecBuf(buffer, offset) {
const dataView = new DataView(buffer, offset);
return {
length: dataView.getInt16(0, true), // short little endian
allocated: dataView.getInt16(2, true), // short little endian
offset: dataView.getInt32(4, true), // long little endian
};
}
exports.getSecBuf = getSecBuf;
function getOSVersionStructure(buffer, offset) {
const dataView = new DataView(buffer, offset);
return {
majorVersion: dataView.getInt8(0), // byte
minorVersion: dataView.getInt8(1), // byte
buildNumber: dataView.getInt16(2, true), // short little endian
unknown: dataView.getInt32(4, false), // long
};
}
exports.getOSVersionStructure = getOSVersionStructure;
function getSecBufData(buffer, secBuf, encoding) {
const buf = buffer.slice(secBuf.offset, secBuf.offset + secBuf.length);
return Buffer.from(buf).toString(encoding);
}
exports.getSecBufData = getSecBufData;
function getNtlmEncoding(flag) {
const unicode = 0x1; // NTLMSSP_NEGOTIATE_UNICODE
if (flag | unicode) {
return 'ucs2';
}
return 'utf8';
}
exports.getNtlmEncoding = getNtlmEncoding;
const getNtLmResponseData = (buffer, secBuf) => ({ hex: getSecBufData(buffer, secBuf, 'hex') });
exports.getNtLmResponseData = getNtLmResponseData;
const toHex = (buffer) => Buffer.from(buffer).toString('hex');
exports.toHex = toHex;
function getFlags(flags, value) {
const str = flags
.filter((flag) => value & flag.value)
.map((flag) => flag.label)
.join(' ');
return str.replace(/NTLMSSP_NEGOTIATE_/g, '');
}
exports.getFlags = getFlags;
function decode(base64) {
const b = Buffer.from(base64, 'base64');
return b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength);
}
exports.decode = decode;
//# sourceMappingURL=parser-utils.js.map