Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1x 1x 1x 1x 1x 1x | import { ASN1 } from '@jlguenego/asn.1';
import { inspect } from 'util';
import { ASN1MsgUtils } from '@jlguenego/asn.1/build/src/ASN1MsgUtils';
import { EncodingRule } from '@jlguenego/asn.1/build/src/EncodingRule';
interface KrbApReq {
principalName: string;
realm: string;
}
export function getKerberosDetails(buffer: ArrayBuffer) {
const message = ASN1.parseMsg(buffer, {
encodingRule: EncodingRule.DER,
});
const array = ASN1MsgUtils.queryAll(message, 'tagLabel', 'GeneralString');
const principalName = array
.map((m) => m.value)
.slice(1)
.join('/');
const realm = array[0].value as string;
const result: KrbApReq = {
principalName,
realm,
};
return result;
}
export function getKerberosResponseDetails(buffer: ArrayBuffer) {
const message = ASN1.parseMsg(buffer, {
encodingRule: EncodingRule.DER,
});
const msgId = ASN1MsgUtils.query(message, 'tagLabel', '15');
if (msgId) {
return 'Regular KRB_AP_REP message';
}
return (
'probably an GSS-API KRB_ERROR message: ' + inspect(message, false, null)
);
}
|