diff options
author | Binh Trinh <beango@gmail.com> | 2017-04-30 23:17:14 -0400 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2017-05-03 07:40:32 +0000 |
commit | 13b65875d640fc860c4b0eaa12b88a2f60c936c4 (patch) | |
tree | 38172551315d6a3d646e93cde2ae7766f6865b1f | |
parent | c6b56bb9c0263d400501671a7f7a69b8b38db16f (diff) | |
download | wireshark-13b65875d640fc860c4b0eaa12b88a2f60c936c4.tar.gz |
pdcp-lte: add preference to ignore Set Security Algorithm
Useful when captures are already deciphered
Change-Id: Ie0f57efa6dccd21d7bd0f25851cbdc8887d7fbbf
Reviewed-on: https://code.wireshark.org/review/21443
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r-- | epan/dissectors/packet-pdcp-lte.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/epan/dissectors/packet-pdcp-lte.c b/epan/dissectors/packet-pdcp-lte.c index dca2ee3c00..7304565088 100644 --- a/epan/dissectors/packet-pdcp-lte.c +++ b/epan/dissectors/packet-pdcp-lte.c @@ -352,6 +352,7 @@ void set_pdcp_lte_up_ciphering_key(guint16 ueid, const char *key) static gboolean global_pdcp_decipher_signalling = TRUE; static gboolean global_pdcp_decipher_userplane = FALSE; /* Can be slow, so default to FALSE */ static gboolean global_pdcp_check_integrity = TRUE; +static gboolean global_pdcp_ignore_sec = FALSE; /* ignore Set Security Algo calls */ /* Use these values where we know the keys but may have missed the algorithm, e.g. when handing over and RRCReconfigurationRequest goes to target cell only */ @@ -1438,6 +1439,12 @@ void set_pdcp_lte_security_algorithms(guint16 ueid, pdcp_security_info_t *securi /* N.B. won't work for internal, non-RRC signalling methods... */ pdcp_security_info_t *p_frame_security; + /* Disable this entire sub-routine with the Preference */ + /* Used when the capture is already deciphered */ + if (global_pdcp_ignore_sec) { + return; + } + /* Create or update current settings, by UEID */ pdcp_security_info_t* ue_security = (pdcp_security_info_t*)wmem_map_lookup(pdcp_security_hash, @@ -2948,6 +2955,11 @@ void proto_register_pdcp(void) "N.B. only possible if build with algorithm support, and have key available and configured", &global_pdcp_check_integrity); + prefs_register_bool_preference(pdcp_lte_module, "ignore_rrc_sec_params", + "Ignore RRC security parameters", + "Ignore the LTE RRC security algorithm configuration, to be used when PDCP is already deciphered in the capture", + &global_pdcp_ignore_sec); + pdcp_sequence_analysis_channel_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal); pdcp_lte_sequence_analysis_report_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), pdcp_result_hash_func, pdcp_result_hash_equal); pdcp_security_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), pdcp_lte_ueid_hash_func, pdcp_lte_ueid_hash_equal); |