|
19 | 19 | draft-ietf-kitten-iakerb-03 |
20 | 20 | - Kerberos Protocol Extensions: [MS-KILE] |
21 | 21 | - Kerberos Protocol Extensions: Service for User: [MS-SFU] |
| 22 | +- Kerberos Key Distribution Center Proxy Protocol: [MS-KKDCP] |
22 | 23 |
|
23 | 24 |
|
24 | 25 | .. note:: |
|
134 | 135 | _GSSAPI_SIGNATURE_OIDS, |
135 | 136 | ) |
136 | 137 | from scapy.layers.inet import TCP, UDP |
| 138 | +from scapy.layers.smb import _NV_VERSION |
137 | 139 |
|
138 | 140 | # Typing imports |
139 | 141 | from typing import ( |
@@ -2502,6 +2504,32 @@ def tcp_reassemble(cls, data, *args, **kwargs): |
2502 | 2504 | bind_bottom_up(TCP, KpasswdTCPHeader, sport=464) |
2503 | 2505 | bind_layers(TCP, KpasswdTCPHeader, dport=464) |
2504 | 2506 |
|
| 2507 | +# [MS-KKDCP] |
| 2508 | + |
| 2509 | + |
| 2510 | +class _KerbMessage_Field(ASN1F_STRING_PacketField): |
| 2511 | + def m2i(self, pkt, s): |
| 2512 | + val = super(_KerbMessage_Field, self).m2i(pkt, s) |
| 2513 | + if not val[0].val: |
| 2514 | + return val |
| 2515 | + return KerberosTCPHeader(val[0].val, _underlayer=pkt), val[1] |
| 2516 | + |
| 2517 | + |
| 2518 | +class KDC_PROXY_MESSAGE(ASN1_Packet): |
| 2519 | + ASN1_codec = ASN1_Codecs.BER |
| 2520 | + ASN1_root = ASN1F_SEQUENCE( |
| 2521 | + _KerbMessage_Field("kerbMessage", "", explicit_tag=0xA0), |
| 2522 | + ASN1F_optional(Realm("targetDomain", None, explicit_tag=0xA1)), |
| 2523 | + ASN1F_optional( |
| 2524 | + ASN1F_FLAGS( |
| 2525 | + "dclocatorHint", |
| 2526 | + "", |
| 2527 | + FlagsField("", 0, -32, _NV_VERSION).names, |
| 2528 | + explicit_tag=0xA2, |
| 2529 | + ) |
| 2530 | + ), |
| 2531 | + ) |
| 2532 | + |
2505 | 2533 |
|
2506 | 2534 | # Util functions |
2507 | 2535 |
|
|
0 commit comments