ya-express-ntlm
Version:
42 lines • 1.61 kB
JavaScript
export 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
};
}
export 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
};
}
export function getSecBufData(buffer, secBuf, encoding) {
const buf = buffer.slice(secBuf.offset, secBuf.offset + secBuf.length);
return Buffer.from(buf).toString(encoding);
}
export function getNtlmEncoding(flag) {
const unicode = 0x1; // NTLMSSP_NEGOTIATE_UNICODE
if (flag | unicode) {
return 'ucs2';
}
return 'utf8';
}
export const getNtLmResponseData = (buffer, secBuf) => ({ hex: getSecBufData(buffer, secBuf, 'hex') });
export const toHex = (buffer) => Buffer.from(buffer).toString('hex');
export function getFlags(flags, value) {
const str = flags
.filter((flag) => value & flag.value)
.map((flag) => flag.label)
.join(' ');
return str.replace(/NTLMSSP_NEGOTIATE_/g, '');
}
export function decode(base64) {
const b = Buffer.from(base64, 'base64');
return b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength);
}
//# sourceMappingURL=parser-utils.js.map