diff options
author | Stefan Metzmacher <metze@samba.org> | 2015-02-20 10:40:22 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2020-01-09 07:13:32 +0000 |
commit | 93267892048c5d0dec38ba88b3c78b393114d313 (patch) | |
tree | b536f653ea9a9ba360b434354111d2fb25b76b76 | |
parent | ed81b83768306b6517dd7d3bcc680f9f04251543 (diff) |
packet-kerberos: add a hint to the used decryption key into the proto tree
This makes it much easier to understand which key is used were.
Change-Id: I6f4bb1e46abb30212a87be2b574dc2679d8b7aed
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-on: https://code.wireshark.org/review/35695
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | epan/dissectors/asn1/kerberos/packet-kerberos-template.c | 21 | ||||
-rw-r--r-- | epan/dissectors/packet-kerberos.c | 27 |
2 files changed, 33 insertions, 15 deletions
diff --git a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c index 4fb758f057..4c22cd27d8 100644 --- a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c +++ b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c @@ -282,6 +282,19 @@ add_encryption_key(packet_info *pinfo, int keytype, int keylength, const char *k /*XXX this needs to be freed later */ new_key->keyvalue=(char *)g_memdup(keyvalue, keylength); } + +static void used_encryption_key(proto_tree *tree, packet_info *pinfo, + enc_key_t *ek, int usage, tvbuff_t *cryptotvb) +{ + proto_tree_add_expert_format(tree, pinfo, &ei_kerberos_decrypted_keytype, + cryptotvb, 0, 0, + "Decrypted keytype %d usage %d in frame %u " + "using %s (%02x%02x%02x%02x...)", + ek->keytype, usage, pinfo->fd->num, ek->key_origin, + ek->keyvalue[0] & 0xFF, ek->keyvalue[1] & 0xFF, + ek->keyvalue[2] & 0xFF, ek->keyvalue[3] & 0xFF); +} + #endif /* HAVE_HEIMDAL_KERBEROS || HAVE_MIT_KERBEROS */ #if defined(HAVE_MIT_KERBEROS) @@ -416,9 +429,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo, if(ret == 0){ char *user_data; - expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype, - "Decrypted keytype %d in frame %u using %s", - ek->keytype, pinfo->num, ek->key_origin); + used_encryption_key(tree, pinfo, ek, usage, cryptotvb); user_data=data.data; if (datalen) { @@ -575,9 +586,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo, if((ret == 0) && (length>0)){ char *user_data; - expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype, - "Decrypted keytype %d in frame %u using %s", - ek->keytype, pinfo->num, ek->key_origin); + used_encryption_key(tree, pinfo, ek, usage, cryptotvb); krb5_crypto_destroy(krb5_ctx, crypto); /* return a private wmem_alloced blob to the caller */ diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c index aba4b0b8c0..c712aa83ca 100644 --- a/epan/dissectors/packet-kerberos.c +++ b/epan/dissectors/packet-kerberos.c @@ -590,6 +590,19 @@ add_encryption_key(packet_info *pinfo, int keytype, int keylength, const char *k /*XXX this needs to be freed later */ new_key->keyvalue=(char *)g_memdup(keyvalue, keylength); } + +static void used_encryption_key(proto_tree *tree, packet_info *pinfo, + enc_key_t *ek, int usage, tvbuff_t *cryptotvb) +{ + proto_tree_add_expert_format(tree, pinfo, &ei_kerberos_decrypted_keytype, + cryptotvb, 0, 0, + "Decrypted keytype %d usage %d in frame %u " + "using %s (%02x%02x%02x%02x...)", + ek->keytype, pinfo->fd->num, usage, ek->key_origin, + ek->keyvalue[0] & 0xFF, ek->keyvalue[1] & 0xFF, + ek->keyvalue[2] & 0xFF, ek->keyvalue[3] & 0xFF); +} + #endif /* HAVE_HEIMDAL_KERBEROS || HAVE_MIT_KERBEROS */ #if defined(HAVE_MIT_KERBEROS) @@ -724,9 +737,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo, if(ret == 0){ char *user_data; - expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype, - "Decrypted keytype %d in frame %u using %s", - ek->keytype, pinfo->num, ek->key_origin); + used_encryption_key(tree, pinfo, ek, usage, cryptotvb); user_data=data.data; if (datalen) { @@ -883,9 +894,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo, if((ret == 0) && (length>0)){ char *user_data; - expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype, - "Decrypted keytype %d in frame %u using %s", - ek->keytype, pinfo->num, ek->key_origin); + used_encryption_key(tree, pinfo, ek, usage, cryptotvb); krb5_crypto_destroy(krb5_ctx, crypto); /* return a private wmem_alloced blob to the caller */ @@ -4648,7 +4657,7 @@ dissect_kerberos_EncryptedChallenge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ /*--- End of included file: packet-kerberos-fn.c ---*/ -#line 1909 "./asn1/kerberos/packet-kerberos-template.c" +#line 1918 "./asn1/kerberos/packet-kerberos-template.c" /* Make wrappers around exported functions for now */ int @@ -5856,7 +5865,7 @@ void proto_register_kerberos(void) { NULL, HFILL }}, /*--- End of included file: packet-kerberos-hfarr.c ---*/ -#line 2296 "./asn1/kerberos/packet-kerberos-template.c" +#line 2305 "./asn1/kerberos/packet-kerberos-template.c" }; /* List of subtrees */ @@ -5946,7 +5955,7 @@ void proto_register_kerberos(void) { &ett_kerberos_KrbFastArmoredRep, /*--- End of included file: packet-kerberos-ettarr.c ---*/ -#line 2312 "./asn1/kerberos/packet-kerberos-template.c" +#line 2321 "./asn1/kerberos/packet-kerberos-template.c" }; static ei_register_info ei[] = { |